主要涉及以下类(或头文件):
QSqlDatabase和QSqlQuery,其中QSqlDatabase用于创建数据库,QSqlQuery用于执行sql语句。
1.QSqlDatabase创建连接数据库实例,一个QSqlDatabase的实例代表了一个数据库连接。
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI", "QSQLITE"); //设置数据库驱动类型为sqlite
db.setHostName("localhost"); //数据库主机名
db.setDatabaseName("scott"); //数据库名
db.setUserName("stott"); //数据库用户名
db.setPassword("tiger"); //数据库密码
db.open(); //打开数据库连接 调用 open() 方法打开数据库物理连接。在打开连接之前,连接不可用
db.close(); //释放数据库连接
在使用QSqlDatabase::addDatabase("QOCI","QSQLITE")函数时,第一个参数是驱动类型主键,第二个是连接名。
2.QSqlQuery类:操作数据库
QSqlQuery query = = QSqlQuery(db); ;
query.exec(sql);
QSqlQuery query;
query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (:id, :forename, :surname)");
query.bindValue(":id", 1001);
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");
query.exec();
3、查询table名为UserInput里的所有记录
QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText("SELECT * FROM UserInput");//查询语法
qsQuery.prepare(strSqlText);
qsQuery.exec();
while (qsQuery.next()) //依次取出查询结果的每一条记录,直至结束
{
UserInputData userInputData;
userInputData.m_id = qsQuery.value(0).toInt();
userInputData.m_assessDate = qsQuery.value(1).toString();
}
QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText("SELECT MAX(ID) FROM UserInput");//ID最大的值
qsQuery.prepare(strSqlText);
qsQuery.exec();
if (qsQuery.next())
{
return qsQuery.value(0).toInt();
}
else
{
return 0;
}
4、增加
QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText("INSERT INTO UserInput (ID, AssessDate) \
VALUES (:ID, :AssessDate)");
qsQuery.prepare(strSqlText);
qsQuery.bindValue(":ID", id);
qsQuery.bindValue(":AssessDate", userInputData.m_assessDate);
qsQuery.exec();
CommitDB(qsQuery);
5、更新
QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText("UPDATE UserInput SET AssessDate = :AssessDate \
WHERE ID = :ID");
qsQuery.prepare(strSqlText);
qsQuery.bindValue(":AssessDate", userInputData.m_assessDate);
qsQuery.bindValue(":ID", id);
qsQuery.exec();
CommitDB(qsQuery);
6、删除
QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText("DELETE FROM UserInput WHERE ID = :ID");
qsQuery.prepare(strSqlText);
qsQuery.bindValue(":ID", id);
qsQuery.exec();
CommitDB(qsQuery);
原文链接:https://blog.csdn.net/Zzhouzhou237/article/details/79459320