freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

qt數(shù)據(jù)庫操作-在線瀏覽

2024-09-14 22:50本頁面
  

【正文】 用變量。四,事務(wù)操作。工程建好后,添加C++ Header File , ,更改其內(nèi)容如下:ifndef CONNECTION_Hdefine CONNECTION_Hinclude QMessageBoxinclude QSqlDatabaseinclude QSqlQuerystatic bool createConnection(){ QMessageBox::critical(0, qApptr(Cannot open database), QSqlQuery query。 (create table student (id int primary key, name varchar(20)))。 (insert into student values(0, 39。))。 (insert into student values(1, 39。))。 (insert into student values(2, 39。))。 (insert into student values(3, 39。))。 (insert into student values(4, 39。))。 return true。 QApplication a(argc, argv)。 return 1。 }可以看到,我們是在主函數(shù)中打開數(shù)據(jù)庫的,而數(shù)據(jù)庫連接用一個函數(shù)完成,并單獨放在一個文件中,這樣的做法使得主函數(shù)很簡潔。我們打開數(shù)據(jù)庫連接后,新建了一個學(xué)生表,并在其中插入了幾條記錄。這個表共有5條記錄,id和name兩個屬性。,在設(shè)計器中向界面上添加一個Push Button ,和一個Spin Box 。void Widget::on_pushButton_clicked(){ {這表明我們的數(shù)據(jù)庫連接已經(jīng)成功建立了。在上面的程序中,(select * from student)。其中的SQL語句“select * from student”中“*”號表明查詢表中記錄的所有屬性。這條語句執(zhí)行完后,我們便獲得了相應(yīng)的執(zhí)行結(jié)果,因為獲得的結(jié)果可能不止一條記錄,所以我們稱之為結(jié)果集。最常用的有:seek(int n) :query指向結(jié)果集的第n條記錄。last() :query指向結(jié)果集的最后一條記錄。previous() :query指向上一條記錄,每執(zhí)行一次該函數(shù),便指向相鄰的上一條記錄。value(int n) :獲得屬性的值。該函數(shù)返回QVariant類型的數(shù)據(jù),關(guān)于該類型與其他類型的對應(yīng)關(guān)系,可以在幫助中查看QVariant。需要說明,(select * from student)。當(dāng)然我們也可以利用seek(0)函數(shù)或者first()函數(shù)使query指向結(jié)果集的第一條記錄。(true)。下面將“查詢”按鈕的槽函數(shù)更改如下:void Widget::on_pushButton_clicked(){ //開始就先執(zhí)行一次next()函數(shù),那么query指向結(jié)果集的第一條記錄 int rowNum = ()。 //獲取query所指向的記錄在結(jié)果集中的編號 int fieldNo = ().indexOf(name)。 //獲取name屬性所在列的編號,列從左向右編號,最左邊的編號為0 qDebug() rowNum is : rowNum //將結(jié)果輸出 name is : name qDebug() exec seek(2) :。 if((2)) { id is : (0).toInt() qDebug() exec last() :。 if(()) { id is : (0).toInt()include QSqlRecord運行程序,結(jié)果如下:二十四、Qt數(shù)據(jù)庫(四)利用QSqlQuery類執(zhí)行SQL語句(二)(原創(chuàng))20100312 21:51聲明:本文原創(chuàng)于yafeilinux的百度博客。二,在SQL語句中使用變量。 QSqlQuery query。 (insert into student (id, name) (select * from student)。 ()。 int id = (0).toInt()。 QString name = (1).toString()。 qDebug() id name。在上面的程序中,我們先使用了prepare()函數(shù),在其中利用了“:id”和“:name”來代替具體的數(shù)據(jù),而后又利用bindValue()函數(shù)給id和name兩個屬性賦值,這稱為綁定操作。這里的“:id”和“:name”,叫做占位符,這是ODBC數(shù)據(jù)庫的表示方法,還有一種Oracle的表示方法就是全部用“?”號。 values (?, ?))。(1, sixth)。我們也可以利用addBindValue()函數(shù),這樣就可以省去編號,它是按順序給屬性賦值的,如下:(insert into student (id, name) (5)。()。 values (:id, :name))。(:name, sixth)。以上各種形式的表示方式效果是一樣的。下面我們就可以利用綁定操作在SQL語句中使用變量了。 QSqlQuery query。 (select name from student where id = ?)。 int id = uispinBoxvalue()。 (id)。 ()。 ()。 qDebug() (0).toString()。三,批處理操作??聪旅娴睦印?QSqlQuery q。 (insert into student values (?, ?))。 QVariantList ints。 ints 10 11 12 13。 (ints)。 QVariantList names。 names xiaoming xiaoliang xiaogang QVariant(QVariant::String)。 //最后一個是空字符串,應(yīng)與前面的格式相同 (names)。 if (!()) //進行批處理,如果出錯就輸出錯誤 QSqlQuery query。 (select * from student)。 while(()) int id = (0).toInt()。 QString name = (1).toString()。 qDebug() id name。 }} include QSqlError 。最后執(zhí)行execBatch()函數(shù)進行批處理。運行效果如下:四,事務(wù)操作。在Qt中用transaction()開始一個事務(wù)操作,用mit()函數(shù)或rollback()函數(shù)進行結(jié)束。具體地說就是將事務(wù)中所有對數(shù)據(jù)庫的更新寫回到數(shù)據(jù)庫,事務(wù)正常結(jié)束。如下面的例子:void Widget::on_pushButton_clicked(){ { //先判斷該數(shù)據(jù)庫是否支持事務(wù)操作 { //下面執(zhí)行各種數(shù)據(jù)庫操作hello39。 if(!QSqlDatabase::database().mit()) qDebug() QSqlDatabase::database().lastError()。 if(!QSqlDatabase::database().rollback()) //回滾 } (select * from student)。 while(())QSqlDatabase::database()返回程序前面所生成的連接的QSqlDatabase對象。運行結(jié)果如下:可以看到結(jié)果是正確的。二十五、Qt數(shù)據(jù)庫(五)QSqlQueryModel(原創(chuàng))20100322 21:11聲明:本文原創(chuàng)于yafeilinux的百度博客。它們分別是只讀的QSqlQueryModel,操作單表的QSqlTableModel和以及可以支持外鍵的QSqlRelationalTableModel。QSqlQueryModel類為SQL的結(jié)果集提供了一個只讀的數(shù)據(jù)模型,下面我們先利用這個類進行一個最簡單的操作。工程建好后,添加C++ Header File ,更改其內(nèi)容如下:ifndef DATABASE_Hdefine DATABASE_Hinclude QSqlDatabaseinclude QSqlQuerystatic bool createConnection(){yafei039。yafei139。yafei239。}endif // DATABASE_H()。,將其內(nèi)容更改如下:include QtGui/QApplicationinclude include int main(int argc, char *argv[]){ return 1。 Widget w。 ()。 return ()。 QSqlQueryModel *model = new QSqlQueryModel。 modelsetQuery(select * from student)。 modelsetHeaderData(0, Qt::Horizontal, tr(id))。 modelsetHeaderData(1, Qt::Horizontal, tr(name))。 QTableView *view = new QTableView。 viewsetModel(model)。 viewshow()?!庇脕聿樵冋麄€student表的內(nèi)容,可以看到,該類并沒有完全避免SQL語句。最后我們建立了一個視圖view,并將這個model模型關(guān)聯(lián)到視圖中,這樣數(shù)據(jù)庫中的數(shù)據(jù)就能在窗口上的表中顯示出來了。 Widget::on_pushButton_clicked()函數(shù)中添加如下代碼:int column = modelcolumnCount()。 //獲得一條記錄QModelIndex index = modelindex(1,1)。 row num is: row endl the data of index(1,1) is: ()。例如我們在void Widget::on_pushButton_clicked()函數(shù)中添加如下代碼:QSqlQuery query = modelquery()。()。這樣就可以輸出表中的值了,你可以運行程序測試一下。void Widget::on_pushButton_clicked(){yafei1039。 在上面我們執(zhí)行了添加記錄的SQL語句,但是在添加記錄之前,就已經(jīng)進行顯示了,所以我們的更新沒能動態(tài)的顯示出來。 QSqlQueryModel *model = new QSqlQueryModel。 modelsetQuery(select * from student)。 modelsetHeaderData(0, Qt::Horizontal, tr(id))。 modelsetHeaderData(1, Qt::Horizontal, tr(name))。 QTableView *view = new QTableView。 viewsetModel(model)。 viewshow()。 QSqlQuery query = modelquery(
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1