概述
针对业务数据需要持久化存储、高效检索等应用场景,需要用到数据库进行数据的管理。
一、QT数据库类
(1)QT中数据库类
(2)常用的类
QSqlDatabase :通过这个类添加/删除/复制/关闭数据库实例
QSqlQuery:可以使用SQL语句实现交互
二、实现流程
(1)添加动态库支持
在pro文件中,增加
QT += core gui sql
(2)创建数据库实例
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC")
(3)初始化数据库实例
db.setUserName(username)
db.setPassword(password)
db.setDatabaseName(database)
(4)连接数据库
bool bl = db.open()
(5)对数据库进行一系列的添、删、查、改操作(编写并执行SQL语句)
QSqlQuery query(db)
QString sql = "insert into XXXX values(XXXXXXXX')"
query.prepare(sql)
bool bl = query.exec()
(6)关闭数据库
db.close()
三、其他操作
(1)获取数据库驱动名字的集合
QStringList ls = QSqlDatabase::drivers()
可支持的驱动有:
("QSQLITE", "QMYSQL", "QMYSQL3", "QOCI", "QOCI8", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
(2)数据库操作错误码打印
QSqlQuery query(db)
query.lastError()
(4)建表SQL
"create table Person("
"id int identity(1000,1) primary key not null,"
"name char(10)not null,"
"pnum int not null,"
"age int not null,"
"height int not null,)"
//create table Person(id,name,pnum,age,height)
(5)查询SQL
query.prepare("SELECT * from "+table+" where index = '"+QString::number(index)+"'")
(6)写入SQL
query.prepare("INSERT INTO "+table+" values("+QString::number(index)+",'"+Bianliang+"')")
(7)打印数据
1)遍历整个结果 query.next()
2)每一条记录有5个数据使用value(0-4)来访问
3)query.value()的数据类型为QVariant,输出数据时需要强制转换
qDebug()<<query.value(0).toInt()
总结
数据库的难点其实是数据库的部署、ODBC驱动安装,针对不同厂家的数据库,需要多费点心思研究。