Я записываю двоичные данные из картинок в свою базу данных SQLite в поле BLOB, называемое «icondata».
CREATE TABLE pictures(id INTEGER PRIMARY KEY AUTOINCREMENT, icondata BLOB)
Фрагмент кода для записи двоичных данных:
SQLcommand.CommandText = "INSERT INTO pictures (id, icondata) VALUES (" & MyInteger & "," & "@img)"
SQLcommand.Prepare()
SQLcommand.Parameters.Add("@img", DbType.Binary, PicData.Length)
SQLcommand.Parameters("@img").Value = PicData
Это прекрасно работает, и я могу найти значения BLOB в базе данных с помощью инструмента, подобного SQlite Spy .
Но как мне найти конкретный BLOB "icondata"?
Если я попробую с:
SQLcommand.CommandText = "SELECT id FROM pictures WHERE icondata=@img"
и с такими же параметрами, как указано выше:
SQLcommand.Prepare()
SQLcommand.Parameters.Add("@img", DbType.Binary, PicData.Length)
SQLcommand.Parameters("@img").Value = PicData
Dim SQLreader As SQLite.SQLiteDataReader = SQLcommand.ExecuteReader()
While SQLreader.Read()
... Process found database entries....
End While
Я не получил никакого результата.
Если я изменю запрос SELECT на «LIKE» вместо «=», я получаю все записи с BLOB-объектами, а не только соответствующие.
Как мне написать запрос SELECT, чтобы найти 1 точно совпадающую запись для определенного BLOB?