Qt数据库(sqlite) — 总结

本文介绍了如何使用Qt库中的QSqlDatabase和QSqlQuery类来操作SQLite数据库,包括建立数据库连接、执行SQL语句、插入数据、查询数据等基本操作。同时展示了如何进行数据库事务处理、批处理操作以及事务回滚。通过实例代码详细解释了每个步骤,适合Qt初学者和数据库开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <QtSql>
QT += sql
QSqlDatabase类实现了数据库连接的操作
QSqlQuery类用来执行SQL语句
QSqlRecord类 封装数据库所有记录
第一:QSqlDatabase类
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  采用QSQLITE数据库,QMYSQL数据库有问题?
db.setHostName("localhost"); //设置数据库主机名 
db.setDatabaseName("test"); //设置数据库名 
db.setUserName("root"); //设置数据库登入用户名 
db.setPassword("123456"); //设计数据库登入密码 
db.open()打开数据库连接
db.close();//释放数据库
  QStringList drivers = QSqlDatabase::drivers();//静态成员函数,是类的成员函数,不是对象的.返回所有可用的数据库驱动程序的清单
   drivers.removeAll("QMYSQL3");  //删除列表中的项
    foreach(QString driver, drivers)  //遍历数据库驱动  ,测试数据库驱动种类
    qDebug() << “\t” << driver;
建立数据库文件
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if(!db.open()) return false;
    QSqlQuery query;
 query.exec("create table Login(id INTEGER PRIMARY KEY autoincrement, "  //id会自动增加,因为这里不能重复,否则数据库无法修改
                    "goods int, store int, time nvarchar(50), type int,  place nvarchar(50),temperature nvarchar(10) )");
    //query.exec("insert into Login values(1,1002, 1,'2011-9-6',1,'common',24)");
   // query.exec("insert into Login values(2,1005, 1,'2011-9-6',1,'common',24)");
    //query.exec("insert into Login values(3,1010, 2,'2011-9-7',2,'common',25)");
//    query.exec("insert into Login values(4,1012, 2,'2011-9-7',2,'common',25)");
    query.exec("insert into Login values( 1,NULL , NULL,NULL, NULL,NULL,NULL )");
    query.exec("insert into Login values( 2,NULL , NULL,NULL, NULL,NULL,NULL )");
    query.exec("insert into Login values( 3,NULL , NULL,NULL, NULL,NULL,NULL )");
    query.exec("insert into Login values( 4,NULL , NULL,NULL, NULL,NULL,NULL )");
    query.exec("insert into Login values( 5,NULL , NULL,NULL, NULL,NULL,NULL )");
    query.exec("insert into Login values( 6,NULL , NULL,NULL, NULL,NULL,NULL )");
    
第二:QSqlQuery类,查询数据库,插入值到数据库等操作数据库
 
QSqlQuery query; 
query.prepare("INSERT INTO T_USER (name, age) VALUES (:name, :age)"); //准备执行SQL查询
query.bindValue(":name", "justin");   //在这定占位符上确定绑定的值
query.bindValue(":age", 33); 
query.exec(); 

 QSqlQuery query; //以下执行相关QSL语句
    query.exec(“create table student(id int primary key,name varchar)”);
    //新建student表,id设置为主键,还有一个name项
    query.exec(“insert into student values(1,’xiaogang’)”);
    query.exec(“insert into student values(2,’xiaoming’)”);
    query.exec(“insert into student values(3,’xiaohong’)”);
    //向表中插入3条记录
 
query.exec(“select * from student”); 
来查询出表中所有的内容。其中的SQL语句“select * from student”中“*”号表明查询表中记录的所有属性。而当query.exec(“select * from student”);
这条语句执行完后,我们便获得了相应的执行结果,因为获得的结果可能不止一条记录,所以我们称之为结果集。
    while(query.next())
QString name = query.value(0).toString(); //返回"name"字段的索引值"justin",value(i)返回i字段的值,0表示name,1表示age
int id = query.value(1).toInt();
seek(int n) :query指向结果集的第n条记录。指定当前的位置
first() :query指向结果集的第一条记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值