SQLite in Qt

转-http://www.qtcn.org/bbs/read.php?tid=12952

int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
//这句话大家比我熟了,反正是没有乱码了
QApplication app(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//这个地方我开始的时候使用了SQLITE追悔莫急
db.setDatabaseName("aaaa");
//aaaa是通过SQLite程序创建的数据库文件,当前文件夹下
if ( !db.open())
{
QMessageBox::critical(NULL, QObject::tr("Collection"), QObject::tr("数据库连接失败!"));
return 0;
}
return app.exec();
}

### 如何在 QtSQLite 中正确存储和操作布尔值 #### 存储布尔类型的定义 SQLite 并未提供专门的布尔类型,而是使用 `INTEGER` 类型来表示布尔值。通常情况下,0 表示假 (false),而任何非零数值都代表真 (true)[^1]。 #### 创建带有布尔字段的表格 当创建一个包含布尔数据的新表时,在 SQL 建表语句中应指定该列为 INTEGER 或者 TEXT(如果偏好字符串形式)。下面是一个例子: ```sql CREATE TABLE example_table ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, is_active INTEGER CHECK(is_active IN (0, 1)) -- 使用 INTEGER 来模拟 BOOLEAN ); ``` 这里 `is_active` 字段被设定为只能取两个特定值之一:0 或 1[^4]。 #### 插入布尔值到数据库 为了向上述表格插入一条新纪录,可以通过设置相应的整数值得方式完成。例如: ```cpp QSqlQuery query; query.prepare("INSERT INTO example_table (name, is_active) VALUES (:name, :isActive)"); query.bindValue(":name", "Test User"); query.bindValue(":isActive", true ? 1 : 0); // 将 C++ bool 转换为适合 SQLite 的格式 if (!query.exec()) { qDebug() << "Insert failed:" << query.lastError(); } ``` 这段代码展示了如何利用 QtQSqlQuery 绑定参数功能安全地执行含有布尔逻辑的操作。 #### 查询并读取布尔值 从 SQLite 数据库检索布尔值同样简单明了。由于返回的结果是以整数的形式存在的,因此可以直接将其转换回应用程序中的布尔变量: ```cpp bool isActive = false; // 执行查询... while(query.next()){ QString name = query.value(1).toString(); int activeInt = query.value(2).toInt(); // 获取 INTEGER 形式的布尔值 isActive = (activeInt != 0); // 解析成 C++ 的 boolean 类型 } qDebug() << "User status:" << (isActive ? "Active" : "Inactive"); ``` 此片段说明了怎样解析由 SQLite 返回的数据,并适当地映射至本地编程环境下的布尔表达式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值