一般qt都是把開啟乙個預設資料庫連線,操作乙個資料庫連線,但是對sqlite中頻率修改容易加鎖,因此有一種設計模式是把頻率修改的表放在不同的資料庫檔案中,但這樣要修改**運算元據庫部分
通常開啟**
bool databasemanager::opendb()
qsqlerror databasemanager::lasterror()
bool databasemanager::deletedb()
這是最關鍵是兩步
qsqldatabase db = qsqldatabase::adddatabase(「qsqlite」); #開啟資料庫但是重複呼叫qsqldatabase::adddatabase(「qsqlite」); 時會報錯db.setdatabasename(「my.db.sqlite」); #指定資料庫檔案
qsqldatabaseprivate::adddatabase: duplicate connection name 『qt_sql_default_connection』, old connection removed.qt本身是支援,只一般寫法用得少。成功的**如下,一般需要乙個全域性陣列來儲存這些物件
qstring dbname =
"base.db"
qsqldatabase db ;
if(qsqldatabase::contains(dbname))else
//否則開啟這個資料庫,注意帶上資料庫名
db = qsqldatabase::adddatabase("qsqlite",dbname);
因為引入多資料庫,相應類呼叫都要引入資料庫連線物件。
sql 查詢類,可以執行各種sql指令。預設使用方法是
qsqlquery
query();
query.exec("select * from table1");
但這種情況,在多資料庫模式會報錯,提示,>qsqlquery::exec: database not open
其實這是呼叫預設的資料連線又未開啟這個造成,可以在初始化是直接資料庫物件
qsqldatabase db ; //已經開啟資料庫物件
qsqlquery
query(db);
query.exec("select * from table1");
這個也是常用的類,與各種控制項配合相當好用,
它的指定資料庫連線言式是在呼叫setquery時,
qsqldatabase db ; //已經開啟資料庫物件
qsqlquerymodel * sqlmodel =
new qsqlquerymodel();
sqlmodel->setquery("select * from table",db);
Qt Sqlite資料庫加密
專案中需要將sqlite資料庫檔案加密,網上了一下,參考豆子大神的部落格原部落格位址,可以滿足需求,將使用方法記錄一下 將sqlitecipher資料夾中的原始碼編譯生成dll,將外掛程式放入外掛程式的sqldrivers資料夾下,其中sqlitecipher.dll為release版本,sqlit...
Qt sqlite 資料庫的使用
sqlite sql 是一款開源輕量級的資料庫軟體,不需要server,可以整合在其他軟體中,非常適合嵌入式系統。qt5以上版本可以直接使用sqlite。修改.pro檔案,新增sql qt sql新增標頭檔案 include qsqldatabase include qsqlquery includ...
redis 多資料庫
一台伺服器上都快開啟200個redis例項了,看著就崩潰了。這麼做無非就是想讓不同型別的資料屬於不同的應用程式而彼此分開。那麼,redis有沒有什麼方法使不同的應用程式資料彼此分開同時又儲存在相同的例項上呢?就相當於mysql資料庫,不同的應用程式資料儲存在不同的資料庫下。redis下,資料庫是由乙...