我有一个很好的 MySQL 表,如下所示:
CREATE TABLE IF NOT EXISTS BLOBTest(Id INT PRIMARY KEY AUTO_INCREMENT,
Data BLOB);
在里面我有以下内容:
SELECT HEX(Data) from BLOBTest;
+----------------------------------+
| HEX(Data) |
+----------------------------------+
| E764DF04463B55E9E2305934266227A1 |
+----------------------------------+
翻译后,我有一个包含 1 行和两列(Id 和 Data)的表。此行保存 byte[] 数据,存储的 byte[] 数组如下: [-25, 100, -33, 4, 70, 59, 85, -23, -30, 48, 89, 52, 38, 98 , 39, -95]
如何进行查询以获取完整的方法?起初我试过:
SELECT * FROM BLOBTest WHERE Data='[-25, 100, -33, 4, 70, 59, 85, -23, -30, 48, 89, 52, 38, 98, 39, -95]';
但是这种方法根本不起作用,它总是返回一个空集。我需要获取该行的所有信息,而我所拥有的只是 byte[] 值。我该怎么做?
如果可能的话,感谢您的帮助。
编辑:
这是java应用程序的代码及其作用。
public Map<Integer, String> queryAuthor(String author) throws Exception{
//encrypts the name of the author
byte[] cipheredName = cryptManager.encrypt(keyBytes,
author.getBytes());
//queries db for encrypted name
pst = con.prepareStatement("SELECT * FROM BLOBTest WHERE DATA='" + cipheredName+"'");
//builds a map for clients to use with the information from the query.
ResultSet rs = pst.executeQuery();
Map<Integer, String> result = new HashMap<Integer, String>();
while (rs.next()) {
byte[] recoveredBytes = rs.getBytes(2);
byte[] recoveredName = cryptManager.decrypt(keyBytes,
recoveredBytes);
result.put(rs.getInt(1), new String(recoveredName));
}
return result;
}
问题在于:
SELECT * FROM BLOBTest WHERE Data='[-25, 100, -33, 4, 70, 59, 85, -23, -30, 48, 89, 52, 38, 98, 39, -95]';
返回一个空集,从而使变量“rs”为空,因此返回的映射为空。每个人都很难过,因为我是菜鸟,无法进行这样的简单查询 =(