C++跨平臺庫QT學習 使用嵌入式數據庫SQLite

C++跨平臺庫QT學習 使用嵌入式數據庫SQLite


一、SQLite

SQLite是一個輕量級的嵌入型數據庫,不需要服務端,可以運行在很多資源非常小的嵌入式系統中。

SQLite的管理客戶端,可以使用:

  • SQLite官方命令行工具
  • SQLite Database Browser
  • SQLite Administrator
  • SQLite Studio
  • SQLiteSpy
  • 火狐SQLite插件
  • Navicate
  • SQLite Expert Professional

等。

二、QT使用SQLite過程

1. 引入sqlite

修改.pro文件:

<code>QT += sql/<code>

引用的頭文件:

<code>#include 
#include 
#include 
#include /<code>

2. 查看支持的數據庫類型

<code>qDebug() << QSqlDatabase::drivers();/<code>

我的電腦輸出的值有:

<code>("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")/<code>

裡面的QSQLITE表示支持SQLite數據庫。

3. 連接、打開數據庫

<code>       //建立並打開數據庫
       QSqlDatabase database;
       database = QSqlDatabase::addDatabase("QSQLITE");
       database.setDatabaseName("test.db");
       if (!database.open())
       {
           qDebug() << "Error: Failed to connect database." << database.lastError();
       }
       else
       {
           qDebug() << "Succeed to connect database." ;
       }/<code>
  • 數據庫test.db不存在時會自動創建文件。
  • 使用完注意關閉連接。

4. 執行sql語句 QSqlQuery::exec()

(1) 創建表

<code>       //創建表格
       QSqlQuery sql_query;
       if(!sql_query.exec("create table users(id int primary key, name text, age int)"))
       {
           qDebug() << "Error: Fail to create table."<< sql_query.lastError();
       }
       else
       {
           qDebug() << "Table created!";
       }/<code> 

(2) 插入數據

<code>       if(!sql_query.exec("INSERT INTO users VALUES(1, "張三", 30)"))
       {
           qDebug() << sql_query.lastError();
       }
       else
       {
           qDebug() << "inserted success!";
       }
       if(!sql_query.exec("INSERT INTO users VALUES(2, "李四", 30)"))
       {
           qDebug() << sql_query.lastError();
       }
       else
       {
           qDebug() << "inserted success!";
       }/<code>

(3) 查詢語句

<code>       //查詢數據
       sql_query.exec("select * from users");
       if(!sql_query.exec())
       {
           qDebug()

(4) 刪除數據

<code>       sql_query.exec("delete from users where id = 1");
       if(!sql_query.exec())
       {
           qDebug()

(5) 更新數據

<code>       sql_query.exec("update users set name = "myname" where id = 1");
       if(!sql_query.exec())
       {
           qDebug() << sql_query.lastError();
       }
       else
       {
           qDebug() << "updated!";
       }/<code>

(6) 刪除表

<code>       sql_query.exec("drop table users");
       if(sql_query.exec())
       {
           qDebug() << sql_query.lastError();
       }
       else
       {
           qDebug() << "table droped";
       }

/<code>

5. 關閉連接

<code>       database.close();/<code>

運行效果:會自動生成一個test.db數據庫文件。

C++跨平臺庫QT學習 使用嵌入式數據庫SQLite


分享到:


相關文章: