【发布时间】:2019-12-15 14:13:48
【问题描述】:
我想知道如何手动将 BLOB 插入我的 SQLite 数据库。手动我的意思是,不使用将完成命令的驱动程序功能,如setBytes:
Connection con = DriverManager.getConnection("jdbc:sqlite:database.db");
PreparedStatement stmt = con.prepareStatement("INSERT OR REPLACE INTO test (id, aBlobColumn) VALUES (0, ?)";
stmt.setBytes(1, new byte[] {0x37, 0xe7, 0x9f});
stmt.executeUpdate();
是否可以使用这样的命令:
INSERT OR REPLACE INTO test (id, aBlobColumn) VALUES (0, 37e79f);
或者类似的:
INSERT OR REPLACE INTO test (id, aBlobColumn) VALUES (0, BLOB(37, e7, 9f));
我不介意命令是否包含base64数据或原始数据,我不想专门使用十六进制。
【问题讨论】:
-
你用base-64编码的数据试过了吗?
-
不行
-
在什么方面不起作用?我刚刚将一个 1 MB 的 base-64 编码图像插入到 BLOB 列中,没有问题。
-
如果要存储 base64 字符串,则使用 blob 毫无意义(这通常是个坏主意,因为 base 64 编码的数据比原始二进制 blob 占用更多空间。)。 Blob 文字看起来像
X'hexdigits'顺便说一句。每个字节两位数。 -
是的,当然,这就是我想要做的:插入一个原始二进制 BLOB,但使用可以存储为字符串的命令。
X'hexdigits'符号是我正在寻找的。谢谢。