Как sqlitebrowser определить, что данные в ячейке являются блобом? Для некоторых данных он определит, что это blob, но другие данные говорят, что это не blob. Мой пример этого - набор данных, где 10 удваивается, выписанное как blob, но это не называет его блобом. Так что мне действительно хотелось бы знать, как он определяет ячейку, чтобы быть блобом или не быть блобом?Как SqliteBrowser определяет, что данные в ячейке являются блобом?
ответ
https://github.com/sqlitebrowser/sqlitebrowser/issues/16 может быть лучшим ответом. Как кажется, существует или был код для определения того, что нужно отображать: для коротких блобов, подобных тем, которые показаны в примере (с размером меньше 1024 байта), выполняется второе условие: если есть символ \ 0, данные просто отображается как «BLOB».
SQLite C API имеет two different functions для связывания текстового значения или значения двоичного объекта в оператор INSERT, так только приложение писания определяет, что тип значения является.
Функция sqlite3_column_type() возвращает тип значения столбца в текущей строке; это используется браузером.
Те же механизмы также непосредственно в SQL доступна::
> SELECT typeof('hello'), typeof(x'1256AB');
text|blob
Меня больше интересовала эвристика, используемая для определения того, что строка является блобом. – HSchmale
Эвристики нет. Строки и капли - разные типы; SQLite никогда не меняет тип значения. –
Но на картинке выше столбец, описываемый как blob, имеет текст в некоторых ячейках. Итак, как он решает поместить blob или текст в ячейку? – HSchmale
Вы пытались проверить код в GitHub? – Gatunox