qt SQL和tableView操作命令
阿新 • • 發佈:2018-11-14
query.next();//執行一次next,quer指向結果集的第一條記錄
全部清除
query.exec( "DELETE from T_UserInfo");
清除部分 query.exec( QString( "delete from %1 where
rowid
=
%2").arg(name).arg(i)); // rowid 從1開始計數
全選 query.exec(QString("select * from name"); query.next();//或者query.seek(0); 都是自動檢索到第一條資訊
篩選資料 query.exec( QString( "select * from %1 where
A
=%2");//A:輸入你需要篩選的條件
更新資料
方法一:
方法二: query.exec( QString( "update SheetName set bottleCapacity='%1',dose='%2',\
插入一條新的資訊
方法一: query.prepare( "insert into T_UserInfo (userId,role) values (?,?)");
方法二 query.exec( QString( "insert into T_AgentiaTypeList values (%1,%2')").arg(value).arg(value));
建立一個數據表 query.exec( QString( "create table T_UserInfo ([aaaa] int,[aaa] int)"));
建立一個數據庫
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE");
刪除檔案 QFile::remove( "SmartCabinet.db"); //刪除資料庫檔案
刪除資料庫
QSqlDatabase::removeDatabase("QSQLITE");//刪除資料庫
view 操作指令
QSqlTableModel *model;
T_model_Other_Execut-> setTable(“ name ”); //關聯的資料庫名字 T_model_Other_Execut-> select();//全選表格
T_model_Other_Execut-> setHeaderData( 0, Qt:: Horizontal, QObject::tr( "刪除"));//對0列的表頭命名為“刪除” T_model_Other_Execut-> setHeaderData( 1, Qt:: Horizontal, QObject::tr( "勾選"));//對1列的表頭命名為“勾選”
T_model_Other_Execut-> setEditStrategy( QSqlTableModel:: OnManualSubmit); //資訊提交方式
QSqlTableModel::OnFieldChange 0 All changes to the model will be applied immediately to the database. //任何修改不提交,需要手動提交 sumbitall() 或者 sumbit() QSqlTableModel::OnRowChange 1 Changes to a row will be applied when the user selects a different row. //只有當你選中其他行時上一行修改才會自動提交 QSqlTableModel::OnManualSubmit 2 All changes will be cached in the model until either submitAll() or revertAll() is called. //任何修改自動提交
ui-> tableView_showExecuteInfo-> setModel( T_model_Other_Execut);//關聯tableview
ui-> tableView_showExecuteInfo->setItemDelegateForColumn( 0, del_NewOperate);//可以設定單列委託 setItemDelegate();//全部 setItemDelegateForRow()//單行
建議表頭的委託放在cpp ui->setupUi( this); 所在的地方 ui->tableView_showExecuteInfo->setHorizontalHeader(EHeader);//設定表頭的委託 ui->tableView_showExecuteInfo->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);//設定表頭的格式 :這是全部靠左 其他查資料手冊 ui-> tableView_showExecuteInfo->setEditTriggers( QAbstractItemView:: NoEditTriggers); //視窗不可編輯
QAbstractItemView::NoEditTriggers 0 No editing possible. QAbstractItemView::CurrentChanged 1 Editing start whenever current item changes. QAbstractItemView::DoubleClicked 2 Editing starts when an item is double clicked. QAbstractItemView::SelectedClicked 4 Editing starts when clicking on an already selected item. QAbstractItemView::EditKeyPressed 8 Editing starts when the platform edit key has been pressed over an item. QAbstractItemView::AnyKeyPressed 16 Editing starts when any key is pressed over an item. QAbstractItemView::AllEditTriggers 31 Editing starts for all above actions.
T_model_Other_Execut->insertRow(rowNum);//新增 T_model_Other_Execut-> setData( T_model_Other_Execut-> index(rowNum, 0),getC_No);//設定 int getC_No = T_model_Other_Search-> data( T_model_Other_Search-> index(i, 0)).toInt();//讀取 QString getC_AName = T_model_Other_Search-> data( T_model_Other_Search-> index(i, 2)).toString(); T_model_Other_Search->removeRow(i);//移除
query.seek(2);//定位到編號為2的記錄,即第三條記錄
query.last();//定位到最後一條記錄
int rowNum = query.at();//獲取 rowNum 從0開始計數
int columnNum = query.record().count();//獲取 column
int fieldNo = query.record().indexOf("agentiaName");//獲取所在列的編號,從左向右,0
int getC_AName = query.value(0).toString();//獲取值
全部清除
query.exec( "DELETE from T_UserInfo");
清除部分 query.exec( QString( "delete from %1 where
全選 query.exec(QString("select * from name"); query.next();//或者query.seek(0); 都是自動檢索到第一條資訊
篩選資料 query.exec( QString( "select * from %1 where
更新資料
方法一:
query.prepare("update T_Task_PutIn set bottleCapacity = ?,dose = ?,drawerSize = ?,expireDate = ? where id = ?");
query.addBindValue(getC_bottleCapacity);
query.addBindValue(getC_dose);
query.addBindValue(getC_drawerSize );
query.addBindValue(getC_expireDate);query.addBindValue(1); query.exec();
方法二: query.exec( QString( "update SheetName set bottleCapacity='%1',dose='%2',\
drawerSize='%3',expireDate='%4' where rowid=%5").arg(getC_bottleCapacity).arg(getC_dose).arg(getC_drawerSize).arg(getC_expireDate).arg(i+ 1)); //rowid 從1開始
插入一條新的資訊
方法一: query.prepare( "insert into T_UserInfo (userId,role) values (?,?)");
query.addBindValue(user->user_Id);
query.addBindValue(user->user_Role);query.exec();
方法二 query.exec( QString( "insert into T_AgentiaTypeList values (%1,%2')").arg(value).arg(value));
建立一個數據表 query.exec( QString( "create table T_UserInfo ([aaaa] int,[aaa] int)"));
建立一個數據庫
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE");
db.setDatabaseName("SmartCabinet.db");if(!db.open()) return false;
刪除檔案 QFile::remove( "SmartCabinet.db"); //刪除資料庫檔案
刪除資料庫
QSqlDatabase::removeDatabase("QSQLITE");//刪除資料庫
view 操作指令
QSqlTableModel *model;
T_model_Other_Execut-> setTable(“ name ”); //關聯的資料庫名字 T_model_Other_Execut-> select();//全選表格
T_model_Other_Execut-> setHeaderData( 0, Qt:: Horizontal, QObject::tr( "刪除"));//對0列的表頭命名為“刪除” T_model_Other_Execut-> setHeaderData( 1, Qt:: Horizontal, QObject::tr( "勾選"));//對1列的表頭命名為“勾選”
T_model_Other_Execut-> setEditStrategy( QSqlTableModel:: OnManualSubmit); //資訊提交方式
QSqlTableModel::OnFieldChange 0 All changes to the model will be applied immediately to the database. //任何修改不提交,需要手動提交 sumbitall() 或者 sumbit() QSqlTableModel::OnRowChange 1 Changes to a row will be applied when the user selects a different row. //只有當你選中其他行時上一行修改才會自動提交 QSqlTableModel::OnManualSubmit 2 All changes will be cached in the model until either submitAll() or revertAll() is called. //任何修改自動提交
ui-> tableView_showExecuteInfo-> setModel( T_model_Other_Execut);//關聯tableview
ui-> tableView_showExecuteInfo->setItemDelegateForColumn( 0, del_NewOperate);//可以設定單列委託 setItemDelegate();//全部 setItemDelegateForRow()//單行
建議表頭的委託放在cpp ui->setupUi( this); 所在的地方 ui->tableView_showExecuteInfo->setHorizontalHeader(EHeader);//設定表頭的委託 ui->tableView_showExecuteInfo->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);//設定表頭的格式 :這是全部靠左 其他查資料手冊 ui-> tableView_showExecuteInfo->setEditTriggers( QAbstractItemView:: NoEditTriggers); //視窗不可編輯
QAbstractItemView::NoEditTriggers 0 No editing possible. QAbstractItemView::CurrentChanged 1 Editing start whenever current item changes. QAbstractItemView::DoubleClicked 2 Editing starts when an item is double clicked. QAbstractItemView::SelectedClicked 4 Editing starts when clicking on an already selected item. QAbstractItemView::EditKeyPressed 8 Editing starts when the platform edit key has been pressed over an item. QAbstractItemView::AnyKeyPressed 16 Editing starts when any key is pressed over an item. QAbstractItemView::AllEditTriggers 31 Editing starts for all above actions.
T_model_Other_Execut->insertRow(rowNum);//新增 T_model_Other_Execut-> setData( T_model_Other_Execut-> index(rowNum, 0),getC_No);//設定 int getC_No = T_model_Other_Search-> data( T_model_Other_Search-> index(i, 0)).toInt();//讀取 QString getC_AName = T_model_Other_Search-> data( T_model_Other_Search-> index(i, 2)).toString(); T_model_Other_Search->removeRow(i);//移除
T_model_Other_Execut->submitAll();T_model_Other_Search->submitAll(); 最後在任何的表格操作都要提交一下