相关编译环境:win10(64bit) Qt5.12.2 sqlite3 Qt Creator 4.8.2
1.在.pro文件中,QT += 后添加sql,如下:
2.打开/连接数据库
所需头文件:
#include <QSqlError>
#include <QSqlDatabase>
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("LMIS.db");
if(!db.open()){
qCritical("Can't open database: %s(%s)",
db.lastError().text().toLocal8Bit().data(),
qt_error_string().toLocal8Bit().data());
return false;
}
return true;
3.关闭数据库
QSqlDatabase::database().close();
4.修改/更新数据库信息
所需头文件:
#include <QSqlQuery>
#include <QSqlRecord>
bool ExecSQL::modifyIndentInfo(const QString condition, const QString value, const QString DDBH)
{
g_indentInfos.clear();
QSqlQuery query;
QString queryString = QString("update indent set %1 = '%2' "
"where DDBH = '%3'").arg(condition).arg(value).arg(DDBH);
qDebug() << queryString;
return query.exec(queryString);
}
5.插入数据
bool ExecSQL::insertIndentInfo(Indent ind)
{
QSqlQuery query;
QString queryString = QString("insert into indent values"
"('%1', '%2', '%3', '%4', '%5')")
.arg(ind.getDDBH()).arg(ind.getYHBH()).arg(ind.getSHDZ()).arg(ind.getSHRXM()).arg(ind.getSHRLXFS());
qDebug() << queryString;
return query.exec(queryString);
}
6.删除数据
bool ExecSQL::deleteIndentInfo(const QString DDBH)
{
QSqlQuery query;
QString queryString = QString("delete from student where DDBH = '%1'").arg(DDBH);
qDebug() << queryString;
return query.exec(queryString);
}
7.查询数据
ListIndent ExecSQL::selectIndentInfo(QString condition, QString value)
{
ListIndent list;
QSqlQuery query;
QString queryString = QString("select * from indent "
"where %1 = '%2'").arg(condition).arg(value);
qDebug() << queryString;
if(query.exec(queryString))
{
int DDBH_DDBHx = query.record().indexOf("DDBH");
int YHBH_DDBHx = query.record().indexOf("YHBH");
int SHRXM_DDBHx = query.record().indexOf("SHRXM");
int SHDZ_DDBHx = query.record().indexOf("SHDZ");
int SHRLXFS_DDBHx = query.record().indexOf("SHRLXFS");
while(query.next())
{
QString DDBH = query.value(DDBH_DDBHx).toString();
QString YHBH = query.value(YHBH_DDBHx).toString();
QString SHRXM = query.value(SHRXM_DDBHx).toString();
QString SHDZ = query.value(SHDZ_DDBHx).toString();
QString SHRLXFS = query.value(SHRLXFS_DDBHx).toString();
Indent ind(DDBH, YHBH, SHRXM, SHDZ, SHRLXFS);
list.append(ind);
}
}
return list;
}
注:此篇代码以本人管理系统项目代码为例,格式相同,使用时修改变量名函数名即可