gpt4 book ai didi

Qt 和 SQLite 无法处理 'NULL' 值还是我做错了什么?

转载 作者:行者123 更新时间:2023-12-03 16:19:26 24 4
gpt4 key购买 nike

如果我使用 Qt 和 SQLite 创建一个表,该表具有可空列(没有“NOT NULL”的列)并向其中添加一个空值(使用 NULL QVariant)检索此类值将返回 not 和 NULL QVariant ,但是 QVariant类型 String和值(value) "" .是我做错了什么还是 Qt 与 SQLite 无法区分 NULL数据库中的值和默认值(0、“”、默认日期等)?我的测试代码:

#include <QtCore/QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QSqlRecord>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
db.setHostName( "MyHost" );
db.setDatabaseName( "c:\\tmp\\db.sql" );
db.open();

QSqlQuery( "CREATE TABLE a ( b INT )", db );
QSqlQuery query( db );
query.prepare( "INSERT INTO a ( b ) VALUES ( :b )" );
// Insert NULL value into table (NULL variant).
query.bindValue( ":b", QVariant( QVariant::Int ) );
query.exec();
query = QSqlQuery( "SELECT * FROM a", db );
query.next();
// Get value from table - it has type string and is "".
QVariant val = query.value( query.record().indexOf( "b" ) );
QVariant::Type type = val.type();
QString str = val.toString();
}

最佳答案

根据我的经验,如果 DB 值为 NULL,QVariant::isNull() 将在 Qt 4.6.2 和 Qt 4.6.3 上使用 SQLite 返回 true。

关于Qt 和 SQLite 无法处理 'NULL' 值还是我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3387747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com