加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Qt连接SQLite【转自http://mobile.51cto.com/symbian-27...

发布时间:2020-12-12 20:22:39 所属栏目:百科 来源:网络整理
导读:QT数据库 实例 QT Sqlite 操作是本文介绍的内容,不多说,我们先 来看看内容,首先到 SQLite 官方网站下载: http://www.sqlite.org/download.html 得到sqlite3.exe。即可.就可以操作数据库,不用安装,不会修改系统信息。 我们在DOS下运行sqlite3.exe的目录

QT数据库实例QT Sqlite操作是本文介绍的内容,不多说,我们先 来看看内容,首先到SQLite官方网站下载:

http://www.sqlite.org/download.html

得到sqlite3.exe。即可.就可以操作数据库,不用安装,不会修改系统信息。

我们在DOS下运行sqlite3.exe的目录运行sqlite3.exe test就可以创建一个名为test的数据库。

下面我们就可以创建数据库的表了如:

 
  1. createtablestudent(idvarchar(10),namevarchar(20),agesmallint);

注意sqlite命令是基于sql的,必须在命令后面加上“;”,否则sqlite会认为一条语句还没有输入完成,总会提示用户输入。

 
  1. insertintostudentvalues('1001','lovesizhao',26);//增加数据库内容

select * from student;//查看student数据库表的所有内容。这个时候会在sqlite3.exe目录得到一个名为test的文件,就是刚刚生成的数据库文件

当然这是在DOS操作,我将DOS下操作得到的数据库文件test放到Qt工程目录,在QT控制台程序中读取操作,但是却不能显示中文,不知道为什么。后来改成直接都在QT程序中增加数据库内容,也出现中文乱码,在网上找到答案:

将QT设置编码的地方改为:QTextCodec::setCodecForTr(QTextCodec::codecForLocale()));设置为本地编码,插入数据时对查询语句进行QObject::tr()

(首先应该在.pro文件中增加一句:QT += sql)

如下源码:

 
  1. #include<QtCore/QCoreApplication>
  2. #include<QtSql>
  3. #include<QTextCodec>
  4. intmain(intargc,char*argv[]){
  5. QCoreApplicationa(argc,argv);
  6. QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
  7. QSqlDatabasedbconn=QSqlDatabase::addDatabase("QSQLITE");//添加数据库驱动
  8. dbconn.setDatabaseName("mytest.db");//在工程目录新建一个mytest.db的文件
  9. if(!dbconn.open()){
  10. qDebug()<<"fdsfds";
  11. }
  12. QSqlQueryquery;//以下执行相关QSL语句
  13. query.exec("createtablestudent(idvarchar,namevarchar)");//新建student表,id设置为主键,还有一个name项
  14. query.exec(QObject::tr("insertintostudentvalues(1,'李刚')"));
  15. query.exec(QObject::tr("insertintostudentvalues(2,'苹果')"));
  16. query.exec(QObject::tr("insertintostudentvalues(3,'葡萄')"));
  17. query.exec(QObject::tr("insertintostudentvalues(3,'李子')"));
  18. query.exec(QObject::tr("insertintostudentvalues(4,’橘子')"));
  19. query.exec(QObject::tr("insertintostudentvalues(5,'核桃')"));
  20. query.exec(QObject::tr("insertintostudentvalues(6,'芒果')"));
  21. //query.exec(QObject::tr("selectid,namefromstudentwhereid>=1"));
  22. query.exec("selectid,namefromstudentwhereid>=1");
  23. while(query.next())//query.next()指向查找到的第一条记录,然后每次后移一条记录{
  24. intele0=query.value(0).toInt();//query.value(0)是id的值,将其转换为int型
  25. QStringele1=query.value(1).toString();
  26. qDebug()<<ele0<<ele1;//输出两个值
  27. }
  28. query.exec(QObject::tr("dropstudent"));
  29. returna.exec();
  30. }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读