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中屬性的值來表徵,結構描述簡單 資料檢索操作不依賴於路徑資訊或過程資...