- 論壇徽章:
- 0
|
聲明:本文原創(chuàng)于yafeilinux的百度博客,http://hi.baidu.com/yafeilinux 轉載請注明出處。
從今天開始我們學習Qt數據庫編程的內容。
先說明:我們以后使用現在最新的基于Qt 4.6.2的Qt Creator 1.3.1 Windows版本,該版本是2010年2月17日發(fā)布的。
數據庫幾乎是每個較大的軟件所必須應用的,而在Qt中也使用QtSql模塊實現了對數據庫的完美支持。我們在Qt Creator的幫助中查找QtSql Module,其內容如下圖:
可以看到這個模塊是一組類的集合,使用這個模塊我們需要加入頭文件#include <QtSql>,而在工程文件中需要加入一行代碼:QT += sql
這里每個類的作用在后面都有簡單的介紹,你也可以進入其中查看其詳細內容。下面我們先簡單的說一下QSqlDatabase類和QSqlQuery類。 QSqlDatabase類實現了數據庫連接的操作,現在Qt支持的數據庫類型有如下幾種:
而
現在我們使用的免費的Qt只提供了SQLite和ODBC數據庫的驅動(我們可以在Qt
Creator安裝目錄下的qt\plugins\sqldrivers文件夾下查看),而其他數據庫的驅動需要我們自己添加。SQLite是一個小巧的
嵌入式數據庫,關于它的介紹你可以自己在網上查找。 QSqlQuery類用來執(zhí)行SQL語句。(關于SQL語句:在我的教程中只會出現很簡單的SQL語句,你沒有相關知識也可以看懂,但是如果想進行深入學習,就需要自己學習相關知識了。)
下面我們就先利用這兩個類來實現最簡單的數據庫程序,其他的類我們會在以后的教程中逐個學習到。 1.新建Qt控制臺工程。
2.選擇上QtSql模塊,這樣就會自動往工程文件中添加QT += sql 這行代碼了。
3.修改main.cpp中的內容如下。 #include <QtCore/QCoreApplication> #include <QtSql> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加數據庫驅動 db.setDatabaseName(":memory:"); //數據庫連接命名 if(!db.open()) //打開數據庫 { return false; } QSqlQuery query; //以下執(zhí)行相關QSL語句 query.exec("create table student(id int primary key,name varchar)"); //新建student表,id設置為主鍵,還有一個name項 query.exec("insert into student values(1,'xiaogang')"); query.exec("insert into student values(2,'xiaoming')"); query.exec("insert into student values(3,'xiaohong')"); //向表中插入3條記錄 query.exec("select id,name from student where id >= 2"); //查找表中id >=2 的記錄的id項和name項的值 while(query.next()) //query.next()指向查找到的第一條記錄,然后每次后移一條記錄 { int ele0 = query.value(0).toInt(); //query.value(0)是id的值,將其轉換為int型 QString ele1 =query.value(1).toString(); qDebug() << ele0 <<ele1 ; //輸出兩個值 } return a.exec(); } 我們使用了SQLite數據庫,連接名為“:memory:”表示這是建立在內存中的數據庫,也就是說該數據庫只在程序運行期間有效。如果需要保存該數據庫文件,我們可以將它更改為實際的文件路徑。 4.最終效果如下。
5.我們可以將主函數更改如下。 int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t" << driver; return a.exec(); } 這樣運行程序就可以顯示現在所有能用的數據庫驅動了。
可以看到現在可用的數據庫驅動只有三個。 |
|