詳解 Qt 4訪問Sqlite數據庫
本文介紹的詳解 Qt 4訪問Sqlite數據庫,文章不僅對sqlite做了簡單描述,并且很詳細的介紹了sqlite的優勢和操作,不多說了,我們先來看內容。
sqlite簡介
sqlite 是一款輕量級的、基于文件的嵌入式數據庫,2000年就已經誕生,經過7年多的發展,直到今天已經成為***的嵌入式數據庫,包括google在內的公司 在其桌面軟件中亦使用 sqlite 存儲用戶數據。由此可以看出,已經沒有任何理由去懷疑sqlite的穩定性了。
sqlite的優勢
1、免配置,和access一樣,只要把數據庫文件通過ftp上傳到服務器上就可以使用,不需要服務器的額外支持
2、備份方便,因為只是一個文件,只要復制一份該文件,就能備份整個數據庫
3、雖然是輕量級數據庫,但他支持*** 2tb 的單個庫文件。
4、快,***的快。經過實際測試,在幾百萬記錄的情況下,sqlite的插入和查詢速度和 mysql 不分上下,快于 sql server,10倍于 access (但這并不意味著它可以替代 sql server )
用QT操作sqlite,由于sqlite屬于輕量級的數據庫,不需要配置,不需要安裝,也不需要管理員,所以也就沒必要像操作mysql等數據庫一樣的設置主機,用戶和密碼了。樣例如下:
- #include <QApplication>
- #include <QTextEdit>
- #include <QString>
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QSqlError>
- #include <QSqlDriver>
- #include <QDateTime>
- #include <QDebug>
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QTextEdit display;
- display.resize(400, 160);
- display.show(); //下面進行數據庫的設置
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //使用sqlite數據庫驅動
- db.setDatabaseName("test"); //我們之前建立的數據庫
- bool ok = db.open(); //嘗試連接數據庫
- if (ok)
- { //這里用text已經成功連上數據庫
- QSqlQuery query; //新建一個查詢的實例
- if (query.exec("select * from student")) //嘗試列出 student 表的所有記錄
- { //本次查詢成功
- int numRows = 0; //詢問數據庫驅動,是否驅動含有某種特性
- if (db.driver()->hasFeature(QSqlDriver::QuerySize))
- {
- numRows = query.size(); //如果支持結果影響的行數,那么直接記錄下來
- }
- else
- {
- query.last(); //否則定位到結果***,qt 文檔說,這個方法非常慢
- numRows = query.at() + 1;
- query.seek(-1);
- }
- QString name, age;
- display.append("===========================================");
- while(query.next())
- { //定位結果到下一條記錄
- name = query.value(0).toString();
- age = query.value(1).toString();
- QString result = name + " " + age;
- display.append(result);
- }
- display.append("===========================================");
- display.append(QString("totally %1 rows").arg(numRows) );
- }
- else
- { //如果查詢失敗,用下面的方法得到具體數據庫返回的原因
- QSqlError error = query.lastError();
- display.append("From mysql database: " + error.databaseText());
- }
- }
- else
- { //打開數據庫失敗,顯示數據庫返回的失敗描述
- display.append("cannot open database.");
- display.append("Reason: " + db.lastError().databaseText());
- }
- QApplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit()));
- return app.exec();
- }
小結:詳解 Qt 4訪問Sqlite數據庫的內容介紹完了,希望本文對你有所幫助。