qt 操作mysql

QSqlQuery类中提供了多个函数来操作这个集合,需要注意这个集合中的记录是从0开始编号的。最常用的有:

seek(int n) :query指向结果集的第n条记录。

first() :query指向结果集的第一条记录。

last() :query指向结果集的最后一条记录。

next() :query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录。

previous() :query指向上一条记录,每执行一次该函数,便指向相邻的上一条记录。

record() :获得现在指向的记录。

value(int n) :获得属性的值。其中n表示你查询的第n个属性,比方上面我们使用“select * from student”就相当于“select id, name from student”,那么value(0)返回id属性的值,value(1)返回name属性的值。该函数返回QVariant类型的数据,关于该类型与其他类型的对应关系,可以在帮助中查看QVariant。

at() :获得现在query指向的记录在结果集中的编号。

需要说明,当刚执行完query.exec(“select * from student”);这行代码时,query是指向结果集以外的,我们可以利用query.next(),当第一次执行这句代码时,query便指向了结果集的第一条记录。当然我们也可以利用seek(0)函数或者first()函数使query指向结果集的第一条记录。但是为了节省内存开销,推荐的方法是,在query.exec(“select * from student”);这行代码前加上query.setForwardOnly(true);这条代码,此后只能使用next()和seek()函数。


 int rowNum = query.at();  
        //获取query所指向的记录在结果集中的编号  
        int columnNum = query.record().count();  
        //获取每条记录中属性(即列)的个数  
        int fieldNo = query.record().indexOf(“name”);  
        //获取”name”属性所在列的编号,列从左向右编号,最左边的编号为0  
        int id = query.value(0).toInt();  
        //获取id属性的值,并转换为int型  
       QString name = query.value(fieldNo).toString(); 


### 环境准备 在Qt项目的`.pro`文件中添加对SQL模块的支持: ```plaintext QT += sql ``` 同时,需要设置MySQL的相关路径,示例如下: ```plaintext SET(FEATURE_sql_mysql ON) SET(MySQL_INCLUDE_DIR "D:/QtProject/tmp/include") //路径记得更换成自己的 SET(MySQL_LIBRARY "D:/QtProject/tmp/lib/libmysql.lib") //路径记得更换成自己的 ``` 保存之后点击左下角小锤子进行构建 [^2]。 ### 连接数据库 以下是连接MySQL数据库的示例代码: ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QSqlError> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("your_database_name"); db.setUserName("your_username"); db.setPassword("your_password"); if (!db.open()) { qDebug() << "Failed to connect to database:" << db.lastError().text(); } else { qDebug() << "Connected to database!"; } return a.exec(); } ``` ### 执行查询 可以同时执行多条语句,示例代码如下: ```cpp #include <QSqlQuery> #include <QDebug> // ... 数据库连接代码 ... QString sql = "insert into student (id,name,age,math) values (13,'kaw',20,97);delete from student where id=2;update student set name='sdd',math=100 where id=10;"; QSqlQuery query; //创建一个QSqlQuery对象 query.exec(sql); //执行mysql语句 ``` ### 批处理操作 方式一:使用`addBindValue()`,示例代码如下: ```cpp QSqlQuery query; query.prepare("INSERT INTO student (id, name, age, math) VALUES (?, ?, ?, ?)"); query.addBindValue(14); query.addBindValue("new_name"); query.addBindValue(21); query.addBindValue(98); if (query.exec()) { qDebug() << "Insert success!"; } else { qDebug() << "Insert failed:" << query.lastError().text(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值