日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

qt mysql怎么选表_Qt的Mysql数据库表操作(1)

發布時間:2025/3/20 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt mysql怎么选表_Qt的Mysql数据库表操作(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Qt中的QSqlDatabase、QSqlQueryModel、QSqlRecord、QSqlTableModel等類為我們提供了快速開發數據庫的方式,支持多種數據庫連接,例如oracle,db2,Mysql,Sqlserver等數據庫,QSqlDatabase類實現了數據庫連接的操作;QSqlQuery類用來執行SQL語句,對數據庫記錄的Select、Insert、Update、Delete操作;QSqlRecord類 封裝數據庫所有記錄;QSqlTableModel?繼承QSqlQueryModel類?,該類提供了一個可讀寫單張SQL表的可編輯數據模型,功能:修改,插入,刪除,查詢,和排序等功能。

那么如何連接Mysql數據庫呢?我們一般使用靜態方法addDatabas類實現數據庫的連接:直接上代碼:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

db.setPort(3306);

db.setHostName("139.129.21.226");

db.setDatabaseName("table");

db.setUserName("root");

db.setPassword("123abc");

if(db.open())

{

qDebug()<

qDebug()<

QSqlQuery query("show tables from admin");//admin數據庫里的所有表

}else{

qDebug()<

}

一般情況下,我們安裝Qt5以上版本,都自帶了數據庫驅動,只需要在程序里指明即可,有些情況下,會在連接時報缺該驅動,那么就需要要重寫編譯下對應的數據庫驅動了,詳細編譯過程,請查相關資料,這里只講操作,不再贅述。下面我們看下數據庫的操作:

1、QSqlQuery?創建表:

QSqlQuery query;

if(!query.exec("CREATE TABLE admin(id INTEGER PRIMARY KEY, name VARCHAR,passwdVARCHAR,create_time DATETIME,root VARCHAR, authority VARCHAR)"))

{

return query.lastError();

}

2、QSqlQuery?數據插入:

QSqlQuery?query;

query.exec("SELECT?*?FROM?admin ");?//?查詢的結果可能不止一條記錄,所以我們稱之為結果集

while?(query.next())

{

QString?id?=?query.value(0).toInt ();?//取第i條記錄第1個字段(從0開始計數)的結果

int?name?=?query.value(0).toString ();?//取第i條記錄第2個字段的結果

}

seek(int n) :query指向結果集的第n條記錄。指定當前的位置

first() :query指向結果集的第一條記錄。

last() :query指向結果集的最后一條記錄。

next() :query指向下一條記錄,每執行一次該函數,便指向相鄰的下一條記錄。

previous() :query指向上一條記錄,每執行一次該函數,便指向相鄰的上一條記錄。

record() :獲得現在指向的記錄。

value(int n) :獲得屬性的值。其中n表示你查詢的第n個屬性

int rowNum = query.at(); //獲取query所指向的記錄在結果集中的編號

int fieldNo =query.record().indexOf(“name”); //返回"name"的列號

int columnNum =query.record().count();?//獲取每條記錄中屬性(即列)的個數

3、QSqlQuery?事務操作:

操作函數:transaction(),commit()提交,rollback()回滾

操作事務前,先判斷該數據庫是否支持事務操作。hasFeature是QSQLDriver類函數

if?(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions)){?...?}?//

插入一條記錄,然后提交事務

QSqlDatabase::database().transaction();

QSqlQuery query;

query.exec("SELECT id FROM admin WHERE id=12");

if (query.next())

{

query.exec("INSERT INTO T_STUDENT (id,name,root) VALUES (3,'lixiao',1)");

}

QSqlDatabase::database().commit();

4、綜合示例:

ui->tableWidget = new QTableWidget(6,6);

//設置表格行標題的對齊方式

ui->tableWidget->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);

ui->vlaout->addWidget(ui->tableWidget);

//設置行表題

QStringList rowLabels;

rowLabels << "Line1" << "Line2" << "Line3" << "Line4"<< "Line5"<< "Line6";

ui->tableWidget->setVerticalHeaderLabels(rowLabels);

//設置每一行的高度

for(int i = 0; i < 6; i++)

ui->tableWidget->setRowHeight(i, 22);

//自動調整最后一列的寬度使它和表格的右邊界對齊

ui->tableWidget->horizontalHeader()->setStretchLastSection(true);

//設置表格的選擇方式

ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);

//設置編輯方式

ui->tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked);

//設置表格的內容

for (int row = 0; row < 6; ++row)

{

QTableWidgetItem *item0, *item1, *item2, *item3, *item4 , *item5;

item0 = new QTableWidgetItem;

item1 = new QTableWidgetItem;

item2 = new QTableWidgetItem;

item3 = new QTableWidgetItem;

item4 = new QTableWidgetItem;

item5 = new QTableWidgetItem;

QSqlQuery query1("select * from admin");//查詢表的內容

while (query1.next()) {

QString id = query1.value(0).toString();//表第1個字段的內容

QString name = query1.value(1).toString();//表第2個字段的內容

QString passwd = query1.value(2).toString();//表第3個字段的內容

QString create_time = query1.value(3).toString();//表第4個字段的內容

QString root = query1.value(4).toString();//表第5個字段的內容

QString authority = query1.value(5).toString();//表第6個字段的內容

qDebug()<

qDebug()<

qDebug()<

qDebug()<

qDebug()<

qDebug()<

item0->setText(id);

ui->tableWidget->setItem(row, 0, item0);

item1->setText(name);

ui->tableWidget->setItem(row, 1, item1);

item2->setText(passwd);

ui->tableWidget->setItem(row, 2, item2);

item3->setText(create_time);

ui->tableWidget->setItem(row, 3, item3);

item4->setText(root);

ui->tableWidget->setItem(row, 4, item4);

item5->setText(authority);

ui->tableWidget->setItem(row, 5, item5);

}

} ui->tableWidget->show();如圖1所示:

圖1?? 后臺管理測試數據庫表操作實例

總結

以上是生活随笔為你收集整理的qt mysql怎么选表_Qt的Mysql数据库表操作(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。