当前位置:   article > 正文

《Qt5+SQLite数据库》_qt5.14中集成的是哪个版本的sqlite附加数据库是什么意思?

qt5.14中集成的是哪个版本的sqlite附加数据库是什么意思?

SQLite简介

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 

 效果图

 

 Qt5使用SQLite

Qt5版本已经自带了SQLite的驱动,不必再进行安装了,数据库最主要的功能就是增、删、查、改

常用指令

  1. QString create_sql = "create table student (id int primary key, name varchar(30), age int)";
  2. QString select_max_sql = "select max(id) from student";
  3. QString insert_sql = "insert into student values (?, ?, ?)";
  4. QString update_sql = "update student set name = :name where id = :id";
  5. QString select_sql = "select id, name from student";
  6. QString select_all_sql = "select * from student";
  7. QString delete_sql = "delete from student where id = ?";
  8. QString clear_sql = "delete from student";

 1、新建Qt Widgets应用程序,修改.pro文件,添加SQL模块 

QT += sql

2、在main.cpp文件中添加如下代码

实现功能:添加一个数据库、创建2个表格star和student、增、删、查;MyDataBase.db数据库文件在E:\Qt_Project\build-SQLiteTest-Desktop_Qt_5_11_1_MinGW_32bit-Debug\MyDataBase.db,使用Navicat For SQLite可以查看

  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. //添加头文件
  4. #include <QSql>
  5. #include <QSqlDatabase>
  6. #include <QSqlError>
  7. #include <QSqlQuery>
  8. #include <QString>
  9. #include <QFile>
  10. #include <QDebug>
  11. #include <QVariantList>
  12. int main(int argc, char *argv[])
  13. {
  14. QApplication a(argc, argv);
  15. MainWindow w;
  16. QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");//添加数据库驱动
  17. database.setDatabaseName("MyDataBase.db");//设置数据库名称
  18. database.setUserName("root"); //设置数据库登录用户名
  19. database.setPassword("123456");//设置数据库登录密码
  20. //打开数据库
  21. if(database.open())
  22. {
  23. qDebug()<<"Database Opened";
  24. /*
  25. QString create_sql = "create table student (id int primary key, name varchar(30), age int)";
  26. QString select_max_sql = "select max(id) from student";
  27. QString insert_sql = "insert into student values (?, ?, ?)";
  28. QString update_sql = "update student set name = :name where id = :id";
  29. QString select_sql = "select id, name from student";
  30. QString select_all_sql = "select * from student";
  31. QString delete_sql = "delete from student where id = ?";
  32. QString clear_sql = "delete from student";
  33. */
  34. //创建表成员
  35. QString create_sql = "create table star (id int primary key, name varchar(30), age int,address varchar(30))"; //创建数据表
  36. //插入数据
  37. QString insert_sql = "insert into star values(?,?,?,?)";
  38. //查询全部数据
  39. QString select_all_sql = "select * from star";
  40. QSqlQuery sql_query;//QSqlQuery类提供执行和操作的SQL语句的方法
  41. sql_query.prepare(create_sql); //创建表
  42. if(!sql_query.exec()) //查看创建表是否成功
  43. {
  44. qDebug()<<QObject::tr("Table Create failed");
  45. qDebug()<<sql_query.lastError();
  46. }
  47. else
  48. {
  49. qDebug()<< "Table Created" ;
  50. //插入数据
  51. sql_query.prepare(insert_sql);
  52. QVariantList GroupIDs;
  53. GroupIDs.append(0);
  54. GroupIDs.append(1);
  55. GroupIDs.append(2);
  56. GroupIDs.append(3);
  57. GroupIDs.append(4);
  58. QVariantList GroupNames;
  59. GroupNames.append("赵丽颖");
  60. GroupNames.append("杨幂");
  61. GroupNames.append("郑爽");
  62. GroupNames.append("可乐");
  63. GroupNames.append("孙耀威");
  64. QVariantList GroupAges;
  65. GroupAges.append(33);
  66. GroupAges.append(35);
  67. GroupAges.append(25);
  68. GroupAges.append(1);
  69. GroupAges.append(42);
  70. QVariantList GroupAddress;
  71. GroupAddress.append("成都");
  72. GroupAddress.append("北京");
  73. GroupAddress.append("天津");
  74. GroupAddress.append("上海");
  75. GroupAddress.append("深圳");
  76. sql_query.addBindValue(GroupIDs);
  77. sql_query.addBindValue(GroupNames);
  78. sql_query.addBindValue(GroupAges);
  79. sql_query.addBindValue(GroupAddress);
  80. if(!sql_query.execBatch())
  81. {
  82. qDebug()<<sql_query.lastError();
  83. }
  84. else
  85. {
  86. qDebug()<<"插入记录成功";
  87. }
  88. //查询所有记录
  89. sql_query.prepare(select_all_sql);
  90. if(!sql_query.exec())
  91. {
  92. qDebug()<<sql_query.lastError();//查询失败
  93. }
  94. else
  95. {
  96. //检索下一个
  97. while(sql_query.next())
  98. {
  99. int id = sql_query.value(0).toInt();
  100. QString name = sql_query.value(1).toString();
  101. int age = sql_query.value(2).toInt();
  102. QString address = sql_query.value(3).toString();
  103. qDebug()<<QString("ID:%1 Name:%2 Age:%3 Address:%4").arg(id).arg(name).arg(age).arg(address);
  104. //删除数据
  105. /*sql_query.prepare(delete_sql);
  106. sql_query.addBindValue(max_id);
  107. if(!sql_query.exec())
  108. {
  109. qDebug()<<sql_query.lastError();
  110. }
  111. else
  112. {
  113. qDebug()<<"deleted!";
  114. }
  115. //清空表
  116. sql_query.prepare(clear_sql);
  117. if(!sql_query.exec())
  118. {
  119. qDebug()<<sql_query.lastError();
  120. }
  121. else
  122. {
  123. qDebug()<<"cleared";
  124. }*/
  125. }
  126. }
  127. }
  128. QSqlQuery query;//QSqlQuery类提供执行和操作的SQL语句的方法
  129. QString createStudent = "create table student (id int primary key, name varchar(30), sex varchar(30),score int)"; //创建数据表
  130. //插入数据
  131. QString insertStudent = "insert into student values(?,?,?,?)";
  132. //查询全部数据
  133. QString selectAllStudent = "select * from student";
  134. //按条件查询
  135. QString selectStudent = "select id, name from student";
  136. query.prepare(createStudent); //创建表.prepare(create_sql); //创建表
  137. if(!query.exec()) //查看创建表是否成功
  138. {
  139. qDebug()<<QObject::tr("Table Create failed");
  140. qDebug()<<query.lastError();
  141. }
  142. else
  143. {
  144. qDebug()<< "Table Created" ;
  145. //插入数据
  146. //query.prepare(insertStudent);
  147. query.prepare("INSERT INTO student (id, name, sex , score) "
  148. "VALUES (?, ?, ?, ?)");
  149. QVariantList GroupIDs;
  150. GroupIDs.append(0);
  151. GroupIDs.append(1);
  152. GroupIDs.append(2);
  153. GroupIDs.append(3);
  154. GroupIDs.append(4);
  155. QVariantList GroupNames;
  156. GroupNames.append("赵丽颖");
  157. GroupNames.append("杨幂");
  158. GroupNames.append("郑爽");
  159. GroupNames.append("可乐");
  160. GroupNames.append("孙耀威");
  161. QVariantList GroupSex;
  162. GroupSex.append("女");
  163. GroupSex.append("女");
  164. GroupSex.append("女");
  165. GroupSex.append("母");
  166. GroupSex.append("男");
  167. QVariantList GroupScore;
  168. GroupScore.append(90);
  169. GroupScore.append(80);
  170. GroupScore.append(70);
  171. GroupScore.append(60);
  172. GroupScore.append(50);
  173. query.addBindValue(GroupIDs);
  174. query.addBindValue(GroupNames);
  175. query.addBindValue(GroupSex);
  176. query.addBindValue(GroupScore);
  177. if(!query.execBatch())
  178. {
  179. qDebug()<<query.lastError();
  180. }
  181. else
  182. {
  183. qDebug()<<"插入记录成功";
  184. }
  185. //查询所有记录
  186. query.prepare(selectAllStudent);
  187. if(!query.exec())
  188. {
  189. qDebug()<<query.lastError();//查询失败
  190. }
  191. else
  192. {
  193. qDebug()<<"查询所有";
  194. //检索下一个
  195. while(query.next())
  196. {
  197. int id = query.value(0).toInt();
  198. QString name = query.value(1).toString();
  199. QString sex = query.value(2).toString();
  200. int score = query.value(3).toInt();
  201. qDebug()<<QString("ID:%1 Name:%2 Sex:%3 Score:%4").arg(id).arg(name).arg(sex).arg(score);
  202. }
  203. }
  204. //按条件查询id,name
  205. query.prepare(selectStudent);
  206. if(!query.exec())
  207. {
  208. qDebug()<<query.lastError();//查询失败
  209. }
  210. else
  211. {
  212. qDebug()<<"按条件查询id,name";
  213. //检索下一个
  214. while(query.next())
  215. {
  216. int id = query.value(0).toInt();
  217. QString name = query.value(1).toString();
  218. //QString sex = query.value(2).toString();
  219. //int score = query.value(3).toInt();
  220. //qDebug()<<QString("ID:%1 Name:%2 Sex:%3 Score:%4").arg(id).arg(name).arg(sex).arg(score);
  221. qDebug()<<QString("ID:%1 Name:%2").arg(id).arg(name);
  222. }
  223. }
  224. }
  225. }
  226. database.close();
  227. //删除数据库
  228. //QFile::remove("database.db");
  229. w.show();
  230. return a.exec();
  231. }

输出结果

  1. Database Opened
  2. Table Created
  3. 插入记录成功
  4. "ID:0 Name:赵丽颖 Age:33 Address:成都"
  5. "ID:1 Name:杨幂 Age:35 Address:北京"
  6. "ID:2 Name:郑爽 Age:25 Address:天津"
  7. "ID:3 Name:可乐 Age:1 Address:上海"
  8. "ID:4 Name:孙耀威 Age:42 Address:深圳"
  9. Table Created
  10. 插入记录成功
  11. 查询所有
  12. "ID:0 Name:赵丽颖 Sex:女 Score:90"
  13. "ID:1 Name:杨幂 Sex:女 Score:80"
  14. "ID:2 Name:郑爽 Sex:女 Score:70"
  15. "ID:3 Name:可乐 Sex:母 Score:60"
  16. "ID:4 Name:孙耀威 Sex:男 Score:50"
  17. 按条件查询id,name
  18. "ID:0 Name:赵丽颖"
  19. "ID:1 Name:杨幂"
  20. "ID:2 Name:郑爽"
  21. "ID:3 Name:可乐"
  22. "ID:4 Name:孙耀威"

Navicat For SQLite是收费的,只有14天的试用期,不用白不用

Navicat For SQLite下载链接:http://www.navicat.com.cn/products

完整代码

百度网盘链接:https://pan.baidu.com/s/1UX7RlEVcscOrskaVepGwAQ 
提取码:1g5l

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/821899
推荐阅读
相关标签
  

闽ICP备14008679号