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

正文內(nèi)容

qt數(shù)據(jù)庫(kù)操作-文庫(kù)吧資料

2025-08-10 22:50本頁面
  

【正文】 ItemFlags flags(const QModelIndex amp。++ Class,然后Class name設(shè)為MySqlQueryModel,Base Class設(shè)為QSqlQueryModel,如下::class MySqlQueryModel : public QSqlQueryModel{public:如果我們要改變數(shù)據(jù)的顯示,就要重寫data() 函數(shù)。但是我們可以創(chuàng)建自己的模型,然后按照我們自己的意愿來顯示數(shù)據(jù)和修改數(shù)據(jù)。 //再次進(jìn)行顯示}這時(shí)運(yùn)行程序,效果如下:可以看到,這時(shí)已經(jīng)將新添的記錄顯示出來了。 //再次查詢整張表yafei2039。為了能讓其動(dòng)態(tài)地顯示我們的更新,我們可以將函數(shù)更改如下:void Widget::on_pushButton_clicked(){ //插入一條記錄}這時(shí)我們運(yùn)行程序,效果如下:我們發(fā)現(xiàn)表格中并沒有增加記錄,怎么回事呢?我們關(guān)閉程序,再次運(yùn)行,效果如下:發(fā)現(xiàn)這次新的記錄已經(jīng)添加了。))。 (insert into student values (10,39。 QSqlQuery query = modelquery()。 viewshow()。 viewsetModel(model)。 QTableView *view = new QTableView。 modelsetHeaderData(1, Qt::Horizontal, tr(name))。 modelsetHeaderData(0, Qt::Horizontal, tr(id))。 modelsetQuery(select * from student)。 QSqlQueryModel *model = new QSqlQueryModel。qDebug() (0).toString()。(select name from student where id = 2 )。:include QSqlRecordinclude QModelIndexinclude QDebug此時(shí)運(yùn)行程序,效果如下:。 the second record is: record endl //獲得一條記錄的一個(gè)屬性的值qDebug() column num is: column endl // 獲得行數(shù)QSqlRecord record = modelrecord(1)。 //獲得列數(shù)int row = modelrowCount()。:include QSqlQueryModelinclude QTableView 我們運(yùn)行程序,并按下“查詢”按鍵,效果如下:我們?cè)诠こ涛募A下查看數(shù)據(jù)庫(kù)文件:下面我們利用這個(gè)模型來操作數(shù)據(jù)庫(kù)。然后我們?cè)O(shè)置了表中屬性顯示時(shí)的名字。}我們新建了QSqlQueryModel類對(duì)象model,并用setQuery()函數(shù)執(zhí)行了SQL語句“(select * from student)。}“查詢”的Push Button,并進(jìn)入其單擊事件槽函數(shù),更改如下:void Widget::on_pushButton_clicked(){ if(!createConnection()) QApplication a(argc, argv)。 ,我們沒有再使用以前的內(nèi)存數(shù)據(jù)庫(kù),而是使用了真實(shí)的文件,這樣后面對(duì)數(shù)據(jù)庫(kù)進(jìn)行的操作就能保存下來了。 return true。))。 (insert into student values (2,39。))。 (insert into student values (1,39。))。 (insert into student values (0,39。 (create table student (id int primary key, name vchar))。 QSqlQuery query。 if(!()) return false。 ()。 QSqlDatabase db = QSqlDatabase::addDatabase(QSQLITE)。我們新建Qt4 Gui Application工程,我這里工程名為queryModel ,然后選中QtSql模塊,Base class選QWidget。這次我們先講解QSqlQueryModel。在上一篇的最后我們說到,Qt中使用了自己的機(jī)制來避免使用SQL語句,它為我們提供了更簡(jiǎn)單的數(shù)據(jù)庫(kù)操作和數(shù)據(jù)顯示模型。對(duì)SQL語句我們就介紹這么多,其實(shí)Qt中提供了更為簡(jiǎn)單的不需要SQL語句就可以操作數(shù)據(jù)庫(kù)的方法,我們?cè)谙乱还?jié)講述這些內(nèi)容。hasFeature()函數(shù)可以查看一個(gè)數(shù)據(jù)庫(kù)是否支持事務(wù)。 }} include QSqlDriver 。 qDebug() (0).toInt() (1).toString()。 //輸出整張表 } qDebug() QSqlDatabase::database().lastError()。 //提交 { // (delete from student where id = 1)。))。 (insert into student values (14, 39。 // if(QSqlDatabase::database().transaction()) //啟動(dòng)事務(wù)操作 QSqlQuery query。 if(QSqlDatabase::database().driver()hasFeature(QSqlDriver::Transactions))rollback()表示回滾,即在事務(wù)運(yùn)行的過程中發(fā)生了某種故障,事務(wù)不能繼續(xù)進(jìn)行,系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的操作全部撤銷,回滾到事務(wù)開始時(shí)的狀態(tài)。mit()表示提交,即提交事務(wù)的所有操作。事務(wù)是數(shù)據(jù)庫(kù)的一個(gè)重要功能,所謂事務(wù)是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做要么全不做,是一個(gè)不可分割的工作單位。注意程序中利用QVariant(QVariant::String)來輸入空值NULL,因?yàn)榍懊娑际荙String類型的,所以這里要使用QVariant::String 使格式一致化。我們?cè)诔绦蛑欣昧斜泶鎯?chǔ)了同一屬性的多個(gè)值,然后進(jìn)行了值綁定。 { //下面輸出整張表 qDebug() ()。void Widget::on_pushButton_clicked(){當(dāng)要進(jìn)行多條記錄的操作時(shí),我們就可以利用綁定進(jìn)行批處理。}運(yùn)行程序,效果如下:我們改變spinBox的數(shù)值大小,然后按下“查詢”按鈕,可以看到對(duì)應(yīng)的結(jié)果就出來了。 //指向第一條記錄 //將id值進(jìn)行綁定 //從界面獲取id的值void Widget::on_pushButton_clicked(){特別注意,在最后一定要執(zhí)行exec()函數(shù),所做的操作才能被真正執(zhí)行。()。(:id, 5)。當(dāng)用ODBC的表示方法時(shí),我們也可以將編號(hào)用實(shí)際的占位符代替,如下:(insert into student (id, name) (sixth)。 values (?, ?))。()。(0, 5)。如下:(insert into student (id, name) 其中編號(hào)0和1分別代表“:id”和“:name”,就是說按照prepare()函數(shù)中出現(xiàn)的屬性從左到右編號(hào),最左邊是0 。}運(yùn)行效果如下:可以看到,在student表的最后又添加了一條記錄。 //下面輸出最后一條記錄 ()。 (1, sixth)。 (0, 5)。 values (:id, :name))。我們先看下面的一個(gè)例子,將“查詢”按鈕的槽函數(shù)更改如下:void Widget::on_pushButton_clicked(){接著上一篇教程。 }}。 name is : (1).toString()。 qDebug() rowNum is : () //定位到結(jié)果集中最后一條記錄 } name is : (1).toString()。 qDebug() rowNum is : () //定位到結(jié)果集中編號(hào)為2的記錄,即第三條記錄,因?yàn)榈谝粭l記錄的編號(hào)為0 } columnNum is : columnNum。 id is : id //獲取name屬性的值 QString name = (fieldNo).toString()。 //獲取id屬性的值,并轉(zhuǎn)換為int型 int id = (0).toInt()。 //獲取每條記錄中屬性(即列)的個(gè)數(shù) int columnNum = ().count()。 { if(()) qDebug() exec next() :。 (select * from student)。 QSqlQuery query。這條代碼,此后只能使用next()和seek()函數(shù)。但是為了節(jié)省內(nèi)存開銷,推薦的方法是,(select * from student)。這行代碼時(shí),query是指向結(jié)果集以外的,(),當(dāng)?shù)谝淮螆?zhí)行這句代碼時(shí),query便指向了結(jié)果集的第一條記錄。at() :獲得現(xiàn)在query指向的記錄在結(jié)果集中的編號(hào)。其中n表示你查詢的第n個(gè)屬性,比方上面我們使用“select * from student”就相當(dāng)于“select id, name from student”,那么value(0)返回id屬性的值,value(1)返回name屬性的值。record() :獲得現(xiàn)在指向的記錄。next() :query指向下一條記錄,每執(zhí)行一次該函數(shù),便指向相鄰的下一條記錄。first() :query指向結(jié)果集的第一條記錄。結(jié)果集其實(shí)就是查詢到的所有記錄的集合,而在QSqlQuery類中提供了多個(gè)函數(shù)來操作這個(gè)集合,需要注意這個(gè)集合中的記錄是從0開始編號(hào)的。(select * from student)。來查詢出表中所有的內(nèi)容。一,操作SQL語句返回的結(jié)果集。 }}:include QSqlQueryinclude QtDebug然后運(yùn)行程序,單擊“查詢”按鈕,效果如下:可以看到在輸出窗口,表中的所有內(nèi)容都輸出出來了。 qDebug() (0).toInt() (1).toString()。 while(()) (select * from student)。 QSqlQuery query。將按鈕的文本改為“查詢”,然后進(jìn)入其單擊事件槽函數(shù),更改如下。程序中的“id int primary key”表明id屬性是主鍵,也就是說以后添加記錄時(shí),必須有id項(xiàng)。表中的一行就叫做一條記錄,一列是一個(gè)屬性。我們今后使用數(shù)據(jù)庫(kù)時(shí)均使用這種方法。 return ()。 ()。 Widget w。 if (!createConnection())}endif // CONNECTION_H:include QtGui/QApplicationinclude include int main(int argc, char *argv[]){fifth39。fourth39。third39。second39。fi
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1