Qt之操作数据库(SQLite)实例

QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持。
QSqlDatabase对象象征了数据库的关联。Qt使用驱动程序与各种数据库的应用编程接口进行通信。Qt的桌面版(Desktop Edition)包括如下一些驱动程序:

 驱动程序 数据库 
 QDB2 IBM DB2 7.1版以及更新的版本 
 QIBASE Borland InterBase
 QMYSQL MySql 
 QOCI 甲骨文公司(Oracle Call Interface)
 QODBC ODBC(包括微软公司的QSL服务)
 QPSQL PostgreSQL的7.3版以及更高版本 
 QSQLITE QSLite第3版 
 QSQLITE2 QSLite第2版

 QTDS Qybase自适应服务器 


访问QSqlite数据库的实例:

步骤:

1、创建Qt控制台程序。

2、在pro问价中添加QT +=sql;

3、在main.cpp中添加如下代码:

[cpp] view plain copy
 print?
  1. #include <QCoreApplication>  
  2. #include <QSql>  
  3. #include <QSqlDatabase>  
  4. #include <QSqlError>  
  5. #include <QSqlQuery>  
  6. #include <QString>  
  7. #include <QFile>  
  8. #include <QDebug>  
  9. #include <QVariantList>  
  10.   
  11. int main(int argc, char *argv[])  
  12. {  
  13.     QCoreApplication a(argc, argv);  
  14.   
  15.     QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");  
  16.   
  17.     database.setDatabaseName("CashSystem.db");  
  18.   
  19.     if(database.open())  
  20.     {  
  21.         qDebug()<<"Database Opened";  
  22.   
  23.         QSqlQuery sql_query;  
  24.         QString create_sql = "create table member (id int primary key, name varchar(30), address varchar(30))"//创建数据表  
  25.         QString insert_sql = "insert into member values(?,?,?)";    //插入数据  
  26.   
  27.         QString select_all_sql = "select * from member";  
  28.   
  29.         sql_query.prepare(create_sql); //创建表  
  30.         if(!sql_query.exec()) //查看创建表是否成功  
  31.         {  
  32.             qDebug()<<QObject::tr("Table Create failed");  
  33.             qDebug()<<sql_query.lastError();  
  34.         }  
  35.         else  
  36.         {  
  37.             qDebug()<< "Table Created" ;  
  38.   
  39.             //插入数据  
  40.             sql_query.prepare(insert_sql);  
  41.   
  42.             QVariantList GroupIDs;  
  43.             GroupIDs.append(0);  
  44.             GroupIDs.append(1);  
  45.             GroupIDs.append(2);  
  46.   
  47.             QVariantList GroupNames;  
  48.             GroupNames.append("hsp");  
  49.             GroupNames.append("rl");  
  50.             GroupNames.append("spl");  
  51.   
  52.             QVariantList GroupAddress;  
  53.             GroupAddress.append("南充");  
  54.             GroupAddress.append("宝鸡");  
  55.             GroupAddress.append("南充");  
  56.   
  57.             sql_query.addBindValue(GroupIDs);  
  58.             sql_query.addBindValue(GroupNames);  
  59.             sql_query.addBindValue(GroupAddress);  
  60.   
  61.             if(!sql_query.execBatch())  
  62.             {  
  63.                 qDebug()<<sql_query.lastError();  
  64.             }  
  65.             else  
  66.             {  
  67.                 qDebug()<<"插入记录成功";  
  68.             }  
  69.   
  70.             //查询所有记录  
  71.             sql_query.prepare(select_all_sql);  
  72.             if(!sql_query.exec())  
  73.             {  
  74.                 qDebug()<<sql_query.lastError();  
  75.             }  
  76.             else  
  77.             {  
  78.                 while(sql_query.next())  
  79.                 {  
  80.                     int id = sql_query.value(0).toInt();  
  81.                     QString name = sql_query.value(1).toString();  
  82.                     QString address = sql_query.value(2).toString();  
  83.                     qDebug()<<QString("ID:%1  Name:%2  Address:%3").arg(id).arg(name).arg(address);  
  84.                 }  
  85.             }  
  86.         }  
  87.     }  
  88.     database.close();  
  89.    // QFile::remove("CashSystem.db");  
  90.     return a.exec();  
  91. }  

4、运行截图:

Qt之操作数据库(SQLite)实例

5、在项目的debug文件夹下,生成了对应的.db文件,使用navicat forSqlite工具打开,显示结果如下:

Qt之操作数据库(SQLite)实例