QT基礎知識 資料庫(第六天)

2021-10-03 07:43:57 字數 2831 閱讀 5828

1,sqlite是乙個靜態資料庫,不需要伺服器,在嵌入式程式設計使用的特別多,因為是開源的。

odbc是windows封裝好的資料庫的一些介面。

2,qt中資料庫的連線,已經資料庫的基本操作(建表,選擇,批量插入等)的偽**如下

#include "widget.h"

#include "ui_widget.h"

#include #include #include #include #include //對資料庫操作的類

#include widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

qsqlquery query;

query.exec("在這裡直接寫sql語句即可");

//如果sql裡面是select語句時,

while(query.next())

//當乙個專案中使用多個資料庫時

qsqldatabase db1 = qsqldatabase::adddatabase("qmysql", "a");//連線名的使用方法,如果使用了了連線名就

//必須要在41行建立query1物件時把資料庫名字傳進去

db1.sethostname("127.0.0.1");//資料庫伺服器ip

db1.setusername("root");//資料庫使用者名稱

db1.setpassword("123456");//密碼

db1.setdatabasename("test");//使用哪個資料庫

//開啟資料庫

if(!db1.open())

qsqlquery query1(db1);//必須把資料庫名字穿進去,才能執行41行,原因見34行注釋

query1.exec("在這裡寫sql語句即可");

//批量插入,odbc風格,預處理語句,?相當於佔位符

query.prepare("insert into student(name, age, score) values(?, ?, ?)");

//給字段設定內容 list

qvariantlist namelist;

namelist << "xiaoming" << "xiaoli" << "xiaoan";

qvariantlist agelist;

agelist << 11 << 22 << 33;

qvariantlist scorelist;

scorelist << 80 << 90 << 100;

//給字段繫結相應的值,需要按順序繫結,否則會插入不成功

query.addbindvalue(namelist);

query.addbindvalue(agelist);

query.addbindvalue(scorelist);

//執行預處理命令,即可完成批量插入

query.execbatch();

//批量插入, oracle風格,和上面的只是佔位符不一樣

query1.prepare("insert into student(name, age, score) values(:name, :age, :score)");

//給字段設定內容 list

qvariantlist namelist;

namelist << "xiaoming" << "xiaoli" << "xiaoan";

qvariantlist agelist;

agelist << 11 << 22 << 33;

qvariantlist scorelist;

scorelist << 80 << 90 << 100;

//給字段繫結

query1.bindvalue(":name", namelist);

query1.bindvalue(":age" ,agelist);

query1.bindvalue(":score" ,scorelist);

//執行預處理命令,即可完成批量插入

query1.execbatch();

}

3,qt中的qsqllite和qmysql的區別,不用設定主機ip,使用者名稱,密碼等,因為sqllite是本地的靜態資料庫,只需要執行下面兩句就可以了,其他的操作和上面的相同。

//新增sqllite資料庫
qsqldatabase db = qsqldatabase::adddatabase("qsqlite");
//設定資料庫
db.setdatabasename("../info.db");
4,資料庫的視覺化——qt中的model-view控制項。

其中model只有乙個功能,那就是儲存資料,然後通過view類將資料顯示出來。偽**如下:

//設定模型

model = new qsqltablemodel(this);

model -> settable("student");//指定使用哪個表

//把model放在view裡面

ui -> tableview -> setmodel(model);

//顯示model裡的資料

model -> select();

//修改表的名字

model -> setheaderdata(0, qt::horizontal, "學號");

這種東西只是開發快一些,不會sql的程式設計師都可以開發,要想提高自己的技術應該盡量不用這種東西。

python基礎知識學習第六天

定義乙個函式 定義乙個由自己想要功能的函式,以下是簡單的規則 一般格式如下 def 函式名 引數列表 函式體1 2預設情況下,引數值和引數名稱是按函式宣告中定義的順序匹配起來的。函式呼叫 給了函式乙個名稱,指定了函式裡包含的引數,和 塊結構。這個函式的基本結構完成以後,你可以通過另乙個函式呼叫執行,...

面試基礎知識 資料庫

事務是指作為單個邏輯工作單元執行的一系列操作,可以被看作乙個單元的一系列sql語句的集合。要麼完全地執行,要麼完全地不執行。如果不對資料庫進行併發控制,可能會產生 髒讀 非重複讀 幻像讀 丟失修改的異常情況。同一時間,只允許乙個事務請求同一資料,不同的事務之間彼此沒有任何干擾。比如a正在從一張銀行卡...

資料庫基礎知識 資料庫系統的型別

層級資料庫 由樹實現 網狀資料庫 由圖實現 缺點 需要使用者建立指標來維護,結構描述複雜 資料庫檢索操作依賴於由指標指示的路徑 逐一記錄的操作,不能有效支援記錄集合的操作。關聯式資料庫 由表實現 優點 資料之間的關聯關係由table中屬性的值來表徵,結構描述簡單 資料檢索操作不依賴於路徑資訊或過程資...