私はこのような素敵なMySQLテーブルを持っています:
CREATE TABLE IF NOT EXISTS BLOBTest(Id INT PRIMARY KEY AUTO_INCREMENT,
Data BLOB);
そしてその中に私は次のものを持っています:
SELECT HEX(Data) from BLOBTest;
+----------------------------------+
| HEX(Data) |
+----------------------------------+
| E764DF04463B55E9E2305934266227A1 |
+----------------------------------+
翻訳すると、1行2列(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[]値だけです。どうすればいいのですか?
可能であれば助けてくれてありがとうplz。
編集:
これが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」は空になり、返されるマップは空になります。私は初心者で、このような単純なクエリを作成できないため、誰もが悲しいです=(