您的位置:首页 > 编程语言 > Qt开发

[QT] SQLite操作

2016-05-13 15:30 447 查看
在工程配置文件中加入sql:

QT       += core sql


先随意贴一段代码:

#include <QCoreApplication>
#include <QtSql/QtSql>
#include <error.h>
#include <QDateTime>
int main(int argc, char *argv[])
{
// 设置加载库目录,设置为从当前目录plugins下加载
// 为什么要加载?因为sql属于plugins,程序在加载plugins时
// 会自动到安装路径下查找,但是如果到别人电脑上,就没有你安装qt的源码库了
// 所以我们可以将qt源码库下的plugins目录复制到可执行程序同目录下
// 然后通过添加LibraryPath来让程序在当前目录下查找
QCoreApplication::addLibraryPath("./plugins");

// 设置数据库驱动类型
// QT支持:QPSQL,QMYSQL,QOCI,QODBC,QDB2,QTDS,QSQLITE,QIBASE
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
// 设置数据库名,他会从当前目录进行加载
db.setDatabaseName("BMJZ.db");
// 打开数据库
if (!db.open()){
perror("db open fail:");
return -1;
}
// 为什么选择在QCoreApplication/QApplication上面加载数据库?
// 因为在整个程序中,我们只用加载一次数据库即可。
// 后面对数据库的操作,只需借助QSqlQuery进行。
QCoreApplication a(argc, argv);

// 所有数据库的操作可以借助QSqlQuery进行操作
QSqlQuery query;
// 一般命令的执行方式
bool ok = query.exec("INSERT INTO tb_log (ID,DIRECTORY, CREATE_DATE)"
"VALUES (4,'Hello World','2222/2/22 22:22:22');");
if(!ok){
perror("insert tb_log fail:");
}
// 这种数据库插入的方法比较实用
for (int i = 0; i< 3; ++i)
{
query.prepare("INSERT INTO tb_log (ID,DIRECTORY, CREATE_DATE) VALUES (:ID, :DIRECTORY, :CREATE_DATE)");
query.bindValue(":ID",QString::number(i+2));
query.bindValue(":DIRECTORY", QString("smith_%1").arg(i+1));
query.bindValue(":CREATE_DATE", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
query.exec();
}
// 这种数据查找结果也是比较实用
query.exec("SELECT ID, DIRECTORY, CREATE_DATE FROM tb_log");
while (query.next()){
printf("%d\t%s\t%s\n",
query.value(0).toInt(),
query.value(1).toString().toStdString().c_str(),
query.value(2).toString().toStdString().c_str());
}
// 获取程序退出
int ret = a.exec();

//释放数据库
db.close();
db.removeDatabase("BMJZ.db");
return ret;
}


关于qt数据库使用技巧,如果是整个程序有多个类来操作数据库。那么我们可以在qt的main函数里面进行数据库初始化和退出。

而需要对数据进行操作的,则直接在类中调用QSqlQuery对数据表进行操作。

关于SQLite的操作,可以参看http://www.runoob.com/sqlite/sqlite-c-cpp.html

这里有对sqlite的相信命令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt sqlite