#include
qt += sql
qsqldatabase類實現了資料庫連線的操作
qsqlquery類執行sql語句
qsqlrecord類封裝資料庫所有記錄
qsqldatabase類
qsqldatabase db = qsqldatabase::adddatabase("qoci");
db.sethostname("localhost"); //資料庫主機名
db.setdatabasename("scott"); //資料庫名
db.setusername("stott"); //資料庫使用者名稱
db.setpassword("tiger"); //資料庫密碼
db.open(); //開啟資料庫連線
db.close(); //釋放資料庫連線
建立資料庫檔案
qsqldatabase db = qsqldatabase::adddatabase("qsqlite");
db.setdatabasename("database.db");
if (!db.open())
return false;
建立資料庫檔案後建立表並插入兩條資料
qsqlquery query;
query.exec("create table student(id integer primary key autoincrement,
name nvarchar(20), age int)"); //id自動增加
query.exec("insert into student values(1,'小明', 14)");
query.exec("insert into student values(2,'小王',15)");
qsqlquery類
插入值到資料庫操作
一、直接用sql語句插入(參照上面)
二、利用預處理方式插入(oracle語法和odbc語法)
適合插入多條記錄,或者避免將值轉換成字串(即正確地轉義),呼叫prepare()函式指定乙個包含佔位符的query,然後繫結要插入的值
oracle語法
qsqlquery query;
query.prepare("insert into t_student (name, age) values (:name, :age)"); //準備執行sql查詢
query.bindvalue(":name", "小王"); //在繫結要插入的值
query.bindvalue(":age", 11);
query.exec();
odbc語法
qsqlquery query;
query.prepare("insert into t_student (name,age) values (?,?)"); //準備執行sql查詢
query.addbindvalue("小王"); //在繫結要插入的值
query.bindvalue(11);
query.exec();
三、批量插入到資料庫中
qsqlquery query;
query.prepare(「insert into student values (?, ?)」);
qvariantlist names;
names << "小王" << "小明" << "小張" << "小新"; // 如果要提交空串,用qvariant(qvariant::string)代替名字
query.addbindvalue(names);
qvariantlist ages;
ages << 11 << 13 << 12 << 11;
query.addbindvalue(ages);
if (!q.execbatch()) //進行批處理,如果出錯就輸出錯誤
qdebug() << q.lasterror();
查詢資料庫操作
qsqlquery query;
query.exec("select * from t_student"); // 查詢的結果可能不止一條記錄,所以我們稱之為結果集
while (query.next())
seek(int n) :query指向結果集的第n條記錄。指定當前的位置
first() :query指向結果集的第一條記錄。
last() :query指向結果集的最後一條記錄。
record() :獲得現在指向的記錄。
value(int n) :獲得屬性的值。其中n表示你查詢的第n個屬性
int rownum = query.at(); //獲取query所指向的記錄在結果集中的編號
int fieldno = query.record().indexof(「name」); //返回"name"的列號
int columnnum = query.record().count(); //獲取每條記錄中屬性(即列)的個數
事務操作
操作函式:transaction(),commit()提交,rollback()回滾
操作事務前,先判斷該資料庫是否支援事務操作。hasfeature是qsqldriver類函式
if (qsqldatabase::database().driver()->hasfeature(qsqldriver::transactions)) //
插入一條記錄,然後提交事務
qsqldatabase::database().transaction();
qsqlquery query;
query.exec("select id from t_student where class=1");
if (query.next())
qsqldatabase::database().commit();
QT筆記 資料庫總結 一
include qt sql qsqldatabase類實現了資料庫連線的操作 qsqlquery類執行sql語句 qsqlrecord類封裝資料庫所有記錄 qsqldatabase類 cpp view plain copy print qsqldatabase db qsqldatabase ad...
QT筆記 資料庫總結 一
include qt sql qsqldatabase類實現了資料庫連線的操作 qsqlquery類執行sql語句 qsqlrecord類封裝資料庫所有記錄 qsqldatabase類 qsqldatabase db qsqldatabase adddatabase qoci db.sethostn...
資料庫筆記(資料庫操作)
1.windows系統下 資料庫啟動 net start mysql2.連線與斷開伺服器 mysql h 位址 p 埠 u 使用者名稱 p 密碼3.檢視當前資料庫 select database 4.顯示當前時間,使用者名稱,資料庫版本 select now user version 5.建立庫 1...