预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共35页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章Qt应用程序开发6.3Qt4数据库应用#include<QtSql> Qt4中提供了QtSql模块。 为访问数据库提供了平台和相应的接口 提供模型视图体系,来完成可视化的信息输入 必须在.pro文件中加上:Qt+=sql QtSQL模块中连接并处理数据库被分成三个层次。 第一层是数据库的驱动程序。 第二层是数据库的连接层。实现对数据库的连接,对数据库操作结果、错误信息的进行处理。 第三层是用户接口层。提供了一套模型视图体系来完成对数据库的可视化操作。Qt4中为多种数据库提供了本地驱动程序,见下表:6.3Qt4数据库应用#include<QSqlDatabase> 用QSqlDatabase类通过驱动程序建立起和数据库的连接 设置hostName,databaseName,username,password等属性 打开数据库 操作数据库 关闭数据库 QSqlDatabasedb=QSqlDatabase::addDatabase(“QMYSQL”); db.setHostName(“localhsot”); db.setDatabaseName(“testmysql.db”); db.setUserName(“user”); db.setPassword(“password”); if(!db.open()) { QMessageBox::critical(0,"cannotopendatabase","Unabeltoconnect",QMessageBox::Cancel); } 6.3Qt4数据库应用SQLite的驱动程序是QSQLITE。 SQLITE数据库不是基于服务器的,不需要设置username,password等属性,只要制定databaseName就可以了。 QSqlDatabasedb=QSqlDatabase::addDatabase(“QSQLITE”); db.setDatabaseName(“testsqlite.db”); if(!db.open()) { QMessageBox::critical(0,"cannotopendatabase","Unabeltoconnect",QMessageBox::Cancel); }SQLite数据库的一个优良特性是它可以在内存中建立,操作快,省去了对磁盘的读写。把数据库保留在内存中,可以通过这样的代码来实现: db.setDatabaseName(“:memory:”); 结束对数据库的操作,用close方法来实现关闭数据库。 6.3Qt4数据库应用用QSqlQuery对象来执行SQL命令来对数据库操作。QSqlQuery类中提供了多个函数来操作结果集。 QSqlQueryquery; query.exec(“SELECT*FROMteacher”); exec()方法执行之后,能够获得相应的执行结果集,集合记录从0开始编号。 first():指向结果集的第一条记录。 last():指向结果集的最后一条记录。 next():指向下一条记录,每执行一次便指向相邻的下一条记录。 previous():指向上一条记录,每执行一次便指向相邻的上一条记录 seek(intn):指向结果集第n条记录。 record():获得现在指向的记录。通过next()方法来指定结果集的第一条记录,依次访问后续的记录,直到最后一条记录,next()方法返回false。如果查询失败或者查询的结果集为空,那么next()返回值也为false。 while(query.next()) { //获取query所指向的记录在结果集中的编号 qDebug("rowNumis:%d",query.at()); //获取id属性的值,并转换成int型 qDebug("idis:%d",query.value(0).toInt()); } 在SQL语句中使用变量 prepare()函数,利用”:id”和”:name”代替具体的数据 bindValue()函数给id,name赋值,为绑定操作,可以将用编号或实际的字段名代替。如: query.prepare("insertintostudent(id,name)values(:id,:name)"); query.bindValue(":id",4); query.bindValue(":name","stu4"); query.exec();当要进行多条记录的操作时,可以利用绑定进行批操作 QSqlQueryquery; QVariantListints; QVariantListnames; query.prepare("insertintostudentvalues(?,?)"); ints<<5<<6; names<<