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

Qt连接使用sqlite初步探讨

发布时间:2020-12-12 20:18:53 所属栏目:百科 来源:网络整理
导读:一.Qt对数据库的支持 Qt中的数据库模块QtSql模块提供了对数据库的支持,该模块中的众多类基本上可分为3层: 1.用户接口层 QSqlQueryModel : Read-onlydatamodelforSQLresultsets QSqlTableModel : Editabledatamodelforasingledatabasetable QSqlRelationalTab

一.Qt对数据库的支持

Qt中的数据库模块QtSql模块提供了对数据库的支持,该模块中的众多类基本上可分为3层:

 
 
  1. 1.用户接口层
  2. QSqlQueryModel :Read-onlydatamodelforSQLresultsets
    QSqlTableModel :Editabledatamodelforasingledatabasetable
    QSqlRelationalTableModel :Editabledatamodelforasingledatabasetable,withforeignkeysupport
  1. 2.SQL接口层
  2. QSqlDatabase
  3. QSqlError
  4. QSqlField
  5. QSqlIndex
  6. QSqlQuery
  7. QSqlRecord
  8. QSqlRelation
  9. QSqlRelationalDelegate
  10. 3.sql驱动层
  11. QSqlResult
  12. QSqlDriver
  13. QSqlDriverCreator
  14. QSqlDriverCreatorBase
  15. QSqlDriverPlugin

用户接口层:

这个层中的几个类实现了将数据库中的数据链接到窗口部件上,这些类是使用模型/框架来实现的,它们是高层次的抽象,不熟SQL也可以来操作数据库.

SQL 接口层:

提供了对数据库的访问.

驱动层:

为具体的数据库和SQL接口层提供了底层的桥梁.

二.Qt下连接数据库的方法

 
 
  1. //指定连接数据库的驱动
  2. QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
  3. //连接到的主机名
  4. db.setHostName("bigblue");
  5. //连接到的数据库名称
  6. db.setDatabaseName("flightdb");
  7. //用户名
  8. db.setUserName("acarlson");
  9. //密码
  10. db.setPassword("123456");
  11. boolok=db.open();

三.Qt驱动数据库的实例

3.1工程文件:database.pro

 
 
  1. SOURCES+=
  2. main.cpp
  3. QT+=sql
  4. HEADERS+=
  5. connection.h

3.2头文件:connection.h

 
 
  1. #ifndefCONNECTION_H
  2. #defineCONNECTION_H
  3. #include<QMessageBox>
  4. #include<QSqlDatabase>
  5. #include<QSqlQuery>
  6. staticboolcreateConnection()
  7. {
  8. QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
  9. db.setDatabaseName(":memory:");
  10. if(!db.open()){
  11. QMessageBox::critical(0,"Cannotopendatabase",
  12. "Unabletoestablishadatabaseconnection.",QMessageBox::Cancel);
  13. returnfalse;
  14. }
  15. QSqlQueryquery;
  16. query.exec("createtablestudent(idintprimarykey,"
  17. "namevarchar(20))");
  18. query.exec("insertintostudentvalues(0,'LiMing')");
  19. query.exec("insertintostudentvalues(1,'LiuTao')");
  20. query.exec("insertintostudentvalues(2,'WangHong')");
  21. returntrue;
  22. }
  23. #endif//CONNECTION_H

3.3主文件main.cpp

 
 
  1. #include<QApplication>
  2. #include<QSqlDatabase>
  3. #include<QDebug>
  4. #include<QStringList>
  5. #include"connection.h"
  6. #include<QVariant>
  7. intmain(intargc,char*argv[])
  8. {
  9. QApplicationa(argc,argv);
  10. //创建数据库连接
  11. if(!createConnection())return1;
  12. //使用QSqlQuery查询整张表
  13. QSqlQueryquery;
  14. query.exec("select*fromstudent");
  15. while(query.next())
  16. {
  17. qDebug()<<query.value(0).toInt()<<query.value(1).toString();
  18. }
  19. returna.exec();
  20. }

(编辑:李大同)

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

    推荐文章
      热点阅读