Qt多窗體之間的資料庫操作

2021-06-20 04:22:13 字數 2426 閱讀 8429

一年多之前就接觸了qt,一直也對它比較情有獨鍾,但是一直都是淺嘗輒止,斷斷續續也沒學到多少東西;前兩天寫乙個帶有登陸介面的客戶端程式,由於初學,在資料庫的連線和使用上遇到了問題,查閱了些資料,詳情如下:

問題:解決qt多窗體間連線查詢資料庫(sqlite)

解決方法1:採用資料庫連線並選定資料庫的方法

1)在main.cpp中定義函式:

#include

#include

#include

bool

createconn

()

return

true

;

}
2)在main函式中建立資料庫連線

intmain

(int

argc

,char

*argv

)

3)在需要呼叫資料庫進行查詢的地方定義資料庫到已經建立的連線即可

//database

在使用的類中定義資料庫db及查詢的query為成員變數;

//標頭檔案中

qsqldatabasedb;

qsqlquery

*query

;

//原始檔中

db=

qsqldatabase

::database

("conn"

);

query

=new

qsqlquery(db

);

query

->

setforwardonly

(true

);

下面就可以用query進行資料庫的操作了。

解決方法2:採用全域性變數的方法(該方法不是很好)

1)自己封裝乙個資料庫的類,如下

#ifndef

qldatabase_h

#define

qldatabase_h

#include

#include

class

qldatabase

;
static

qldatabase

*db;

#endif

//qldatabase_h

可以在類中實現一些test功能函式及一些資料庫操作函式

在類的建構函式中呼叫createconn()函式建立連線,並返回資料庫的鏈結狀態到bdatabaseflag成員變數。

#include

"qldatabase.h"

#include

#include

#include

#include

#include

qldatabase

::qldatabase

()

bool

qldatabase

::createconn

()

else

}

2)初始化類

在第一次使用資料庫的類的原檔案中

#include

"logindialog.h"

#include

"ui_logindialog.h"

#include

#include "qldatabase.h"
logindialog

::logindialog

(qwidget

*parent

):

qdialog

(parent

),

ui(

newui

::logindialog

)

3)每一次呼叫都重新new一下 

這樣只要#include自己封裝的資料庫類的標頭檔案,即可呼叫全域性變數db對資料庫進行相應操作,但是每一次new一下會強迫清除原有的資料庫連線,建立新的資料庫連線。不建議採用第二種方法。

以上僅僅是乙個初學小菜鳥的嘗試,請高手點評指正。

Qt 資料庫操作

sql 是運算元據庫的標準語言,適用於mysql oracle db2 等資料庫。qt 的 qtsql 模組基於 sql 提供了相關資料庫操作函式,因此得以使這些資料庫操作起來大同小異。下面的以sqlite資料庫為例記錄,生成的資料庫可通過sqlitestudio進行視覺化操作。在.pro檔案中新增...

QT資料庫操作

瀏覽 在qsqlquery類中當執行exec 後會把指標放在記錄集中第乙個記錄之上,所以需要呼叫qsqlquery next 來獲取第乙個資料,下面通過迴圈體來遍歷所有表中的資料。while query.next qsqlquery value 函式得到當前記錄區域中的資料,qsqlquery va...

資料庫之間的遠端操作

建立鏈結伺服器exec sp addlinkedserver itsv sqloledb 遠端伺服器名或ip位址 exec sp addlinkedsrvlogin itsv false null,使用者名稱 密碼 查詢示例select from itsv.資料庫名.dbo.表名 匯入示例selec...