当然我们一定要记住这个顺序,先创建数据库,然后再去创建一个表(作为菜鸟的我犯这个错误了),还有一点需要注意的红标记的那句话,我参考的数籍一般都这样写
db.setData baseNa me(":memory:");
这样就把生成的数据库文件是在内存当中的,在工程文件目录下不到。
上面使我们创建了一个数据库和一个表,那么我们如何把它呈现在我们的QTabl eview部件上呢?QSqlTab leMode l *model = new QSqlTab leMode l;
model->setTabl e("person");
model->setEdit Strate gy(QSqlTab leMode l::OnManua lSubmi t);
model->select();
ui->tableVi ew->setMode l(model);
ui->tableVi ew->show();
上面的代码就把数据库中的信息不加筛选的打印到控件上了。
第一次写博客大家多多包涵。。。
Qt中提高sqlite的读写速度
SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度。例如:向数据库中插入100万条数据,在默认的情况下如果仅仅是执行query.exec("insertinto DataBas e(......)
values(......)");就会打开和关闭文件100万次,所以速度当然会很慢。SQLite数据库是支持事务操作的,于是我们就可以通过事务来提高数据库的读写速度。事务的基本原理是:数据库管理系统首先会把要执行的sql语句存储到内存当中,只有当comm it()的时候才一次性全部执行所有内存中的数据库。下面是一个简
单的QT sqlite数据库事务的例子:
#include <QtCore/QCoreAp plicat ion>批量更新sql语句
#include <QtSql>
#include <iostrea m>
using namespa ce std;
int main(intargc, char *argv[])
{
QCoreAp plicat iona(argc, argv);
QSqlDat abased b_sqli te = QSqlDat abase::addData base("QSQLITE",
"connSQL ite");
db_sqli te.setData baseNa me("SQLiteD B.db3");
db_sqli te.open();
QSqlQue ryquery("", db_sqli te);
boolbsucces s = false;
QTimetmpTime;
// 开始启动事务
db_sqlansac tion();
tmpTime.start();
for(int i = 0; i<100000; i++)
{
bsucces s = ("insertinto DataBas e(D_1,D_2,D_3,D_4,D_5) values('TT','TT','TT','TT','TT')");
if (!bsucces s)
{
cout<<"Error occur"<<endl;
break;
}
}
// 提交事务,这个时候才是真正打开文件执行SQL语句的时候
db_sqli temit();
cout<<"10000条数据耗时:"<<tmpTime.elapsed()<<"ms"<<endl;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论