Qt连接使用sqlite初步探讨

一.Qt对数据库的支持  

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

  
  
  
  
  1. 1.用户接口层
  2. QSqlQueryModel :Read-only data model for SQL result sets
    QSqlTableModel :Editable data model for a single database table
    QSqlRelationalTableModel :Editable data model for a single database table, with foreign key support
  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. QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE"); 
  3. //连接到的主机名
  4. db.setHostName("bigblue"); 
  5. //连接到的数据库名称
  6. db.setDatabaseName("flightdb"); 
  7. //用户名
  8. db.setUserName("acarlson"); 
  9. //密码
  10. db.setPassword("123456"); 
  11. bool ok=db.open(); 

 三.Qt驱动数据库的实例

3.1工程文件:database.pro

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

 3.2头文件:connection.h

  
  
  
  
  1. #ifndef CONNECTION_H 
  2. #define CONNECTION_H 
  3. #include <QMessageBox> 
  4. #include <QSqlDatabase> 
  5. #include <QSqlQuery> 
  6.  
  7. static bool createConnection() 
  8.     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
  9.     db.setDatabaseName(":memory:"); 
  10.     if (!db.open()) { 
  11.         QMessageBox::critical(0, "Cannot open database", 
  12.             "Unable to establish a database connection.", QMessageBox::Cancel); 
  13.         return false; 
  14.     } 
  15.     QSqlQuery query; 
  16.     query.exec("create table student (id int primary key, " 
  17.                "name varchar(20))"); 
  18.     query.exec("insert into student values(0, 'LiMing')"); 
  19.     query.exec("insert into student values(1, 'LiuTao')"); 
  20.     query.exec("insert into student values(2, 'WangHong')"); 
  21.      
  22.  
  23.      
  24.     return true; 
  25.  
  26. #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.  
  8. int main(int argc, char *argv[]) 
  9.     QApplication a(argc, argv); 
  10.  
  11.     // 创建数据库连接 
  12.     if (!createConnection()) return 1; 
  13.     // 使用QSqlQuery查询整张表 
  14.     QSqlQuery query; 
  15.     query.exec("select * from student"); 
  16.     while(query.next()) 
  17.     { 
  18.         qDebug() << query.value(0).toInt() << query.value(1).toString(); 
  19.     } 
  20.  
  21.     return a.exec(); 

 

你可能感兴趣的:(sqlite,qt4.8.4)