无法使用 QT 将所有二进制数据值存储到 sqlite3 表中。
为此,我创建了一个 BLOB 数据列来存储名为 logTable 的二进制数据表。我正在尝试将二进制数据插入到 binary_data[] 缓冲区,其值为 0x1 到 0xFF 和 0x00 到 0xFF 等等,直到 1024 字节。但是当我执行查询来存储数据时,表格只显示 0x1 到 0xFF,但剩余的字符没有被存储(因为下一个立即值是 0x00)。我想存储所有的二进制数据值?
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
conect_to_log_db("./log.db");
unsigned char binary_data[1024];
for(unsigned int i = 0, value = 1; i < 1024; i++, value++)
{
binary_data[i] = value;
}
store_to_log_db("01/02/2012,13:03:58", binary_data, 1024);
......
}
bool store_to_log_db(QString dateTime, unsigned char *data, unsigned int dataLength)
{
QSqlQuery objQuery(objLogsDB);
QString query = "CREATE TABLE IF NOT EXISTS logTable(logDateTime VARCHAR(19), packet BLOB, direction INTEGER)";
objQuery.exec(query);
QByteArray dataArr;
dataArr.resize(dataLength);
for(unsigned int i = 0; i < dataLength; i++)
{
dataArr[i] = data[i];
}
QVariant blobData = dataArr.data();
objQuery.prepare("INSERT INTO logTable VALUES(:logDateTime,:packet,:direction)");
objQuery.bindValue(":logDateTime",dateTime);
objQuery.bindValue(":packet",blobData,QSql::In | QSql::Binary);
objQuery.bindValue(":direction",1);
qDebug() << objQuery.exec();
return true;
}
执行此代码后,当我使用 sqlite 输出时,表的结果是 254 个字符
$sqlite3 日志.db
sqlite>.输出try.txt
sqlite>从logTable中选择*;
$ls -l 尝试.txt
大小为 406 字节