1. 程式人生 > >qt SQL和tableView操作命令

qt SQL和tableView操作命令

   query.next();//執行一次next,quer指向結果集的第一條記錄
      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  
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.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(); 最後在任何的表格操作都要提交一下