QT--SQLite
创始人
2024-12-28 22:38:44
0

配置类相关的表,所以我使用sqlite,且QT自带该组件;

1.安装 sqlite-tools-win-x64-3460000、SQLiteExpert5.4.31.575
使用SQLiteExpert建好数据库.db文件,和对应的表后把db文件放在指定目录 ./db/program.db;

2.选择sql组件

在这里插入图片描述
3.新增数据库处理类,在使用数据库的地方调用类成员函数即可

DataModel::DataModel() { 	db = QSqlDatabase::addDatabase("QSQLITE", ""); 	db.setDatabaseName("./db/program.db");     connectDataBase(); }  DataModel::~DataModel() {     disconnectDataBase(); }  // 打开数据库文件 bool DataModel::connectDataBase() {     bool ret = db.open();     if (!ret) {         outPutMsg(QtDebugMsg, "DataModel::connectDataBase error = " + db.lastError().text());     }      return ret; } // 关闭数据库文件 void DataModel::disconnectDataBase() {     db.close(); } QStringList DataModel::queryProgramList() {     QStringList programList;     // 根据名字查询     QString sql = QString("select sectionBarName,programNo from program where 1=1;");     outPutMsg(QtDebugMsg, "DataModel::queryProgramList sql = " + sql);     // 创建一个可以对db执行语句的对象     QSqlQuery query(db);     // 执行sql语句     bool ret = query.exec(sql);     if (!ret)     {         outPutMsg(QtDebugMsg, "DataModel::queryProgramNo error = " + query.lastError().text());         return programList;     }      // 行坐标向下移     while (query.next())     {         //获取数据库query所指的那行的数据         QString program;         program += (query.value(0).toString() + ";"); // sectionBarName         program += QString::number(query.value(1).toInt()); // programNo         // outPutMsg(QtDebugMsg, "DataModel::queryProgramInfoBySectionCode programInfo = " + program);         programList.append(program);     }     return programList; } // 根据型材代号查询程序号码 QString DataModel::queryProgramNo(QString sectionBarNo) {     // 根据名字查询     QString sql = QString("select programNo from program where sectionBarName=\'%1\';").arg(sectionBarNo);     //QString sql = QString("select programNo from program where 1=1");     outPutMsg(QtDebugMsg, "DataModel::queryProgramNo sql = " + sql);     // 创建一个可以对db执行语句的对象     QSqlQuery query(db);     // 执行sql语句     bool ret = query.exec(sql);     if (!ret)     {         outPutMsg(QtDebugMsg, "DataModel::queryProgramNo error = " + query.lastError().text());         return "";     }     QString programNo = "";     // 行坐标向下移     while (query.next())     {         //获取数据库query所指的那行的数据         programNo = QString::number(query.value(0).toInt());         outPutMsg(QtDebugMsg, "DataModel::queryProgramNo programNo = " + programNo);     }     return programNo; }  // 根据程序号码查询 QString DataModel::queryProgramByNo(QString programNo) {     // 根据名字查询     QString sql = QString("select sectionBarName from program where programNo=\'%1\';").arg(programNo);     //QString sql = QString("select programNo from program where 1=1");     outPutMsg(QtDebugMsg, "DataModel::queryProgramByNo sql = " + sql);     // 创建一个可以对db执行语句的对象     QSqlQuery query(db);     // 执行sql语句     bool ret = query.exec(sql);     if (!ret)     {         outPutMsg(QtDebugMsg, "DataModel::queryProgramByNo error = " + query.lastError().text());         return "";     }     QString sectionBarNo = "";     // 行坐标向下移     while (query.next())     {         //获取数据库query所指的那行的数据         sectionBarNo = QString::number(query.value(0).toInt());         outPutMsg(QtDebugMsg, "DataModel::queryProgramByNo sectionBarNo = " + sectionBarNo);     }     return sectionBarNo; }   // 根据型材代号查询程序号码 QStringList DataModel::queryProgramInfoBySectionCode(QString sectionBarNo) {     QStringList programInfoList;     // 根据名字查询     // 使用索引sectionBarName     QString sql = QString("select stepNo, cutNo,x, y, f, Rx, Ry from programInfo where programNo = (select programNo from program where sectionBarName=\'%1\');").arg(sectionBarNo);     //QString sql = QString("select programNo from program where 1=1");     outPutMsg(QtDebugMsg, "DataModel::queryProgramInfoBySectionCode sql = " + sql);     // 创建一个可以对db执行语句的对象     QSqlQuery query(db);     // 执行sql语句     bool ret = query.exec(sql);     if (!ret)     {         outPutMsg(QtDebugMsg, "DataModel::queryProgramInfoBySectionCode error = " + query.lastError().text());         return programInfoList;     }     // 行坐标向下移     while (query.next())     {         //获取数据库query所指的那行的数据         QString programInfo;                   programInfo += (QString::number(query.value(0).toInt())+";"); // stepNo         programInfo += (QString::number(query.value(1).toInt())+";"); // cutNo         programInfo += (QString::number(query.value(2).toDouble(), 'f', 2) + ";"); // x         programInfo += (QString::number(query.value(3).toDouble(), 'f', 2) + ";"); // y         programInfo += (QString::number(query.value(4).toDouble(), 'f', 2) + ";"); // f 速度         programInfo += (QString::number(query.value(5).toDouble(), 'f', 2) + ";"); // Rx         programInfo += (QString::number(query.value(6).toDouble(), 'f', 2)); // Ry                  outPutMsg(QtDebugMsg, "DataModel::queryProgramInfoBySectionCode programInfo = " + programInfo);         programInfoList.append(programInfo);     }     return programInfoList; }  // 更新程序信息 bool DataModel::updateProInfosByProNo(QString proNo, QStringList proInfoList) {     // 开启事务     if (!db.transaction()) {         outPutMsg(QtDebugMsg, "DataModel::updateProInfosByProNo db.error = " + db.lastError().text());         return false;     }      QStringList programInfoList;     // 根据名字查询     // 使用索引sectionBarName     QString sqlDel = QString("delete from programInfo where programNo=\'%1\';").arg(proNo);     outPutMsg(QtDebugMsg, "DataModel::updateProInfosByProNo sqlDel = " + sqlDel);     // 创建一个可以对db执行语句的对象     QSqlQuery query(db);     // 执行sql语句     bool ret = query.exec(sqlDel);     if (!ret)     {         outPutMsg(QtDebugMsg, "DataModel::updateProInfosByProNo error = " + query.lastError().text());         return false;     }     try {         for (int i = 0; i < proInfoList.size(); i++) {             QStringList programInfo = proInfoList.at(i).split(";");             QString sqlOne = "insert into programInfo values ( " + proNo + ",";              for (int j = 0; j < programInfo.size(); j++) {                 if (j > 0) {                     sqlOne += ",";                 }                 sqlOne += programInfo.at(j) ;             }             sqlOne += ");";             outPutMsg(QtDebugMsg, "DataModel::updateProInfosByProNo sqlOne = " + sqlOne);             if (!query.exec(sqlOne))             {                 outPutMsg(QtDebugMsg, "DataModel::updateProInfosByProNo error = " + query.lastError().text());                 return false;             }         }     }     catch (...) {         outPutMsg(QtDebugMsg, "DataModel::updateProInfosByProNo error = " + query.lastError().text());         return false;     }           // 开启事务     if (!db.commit()) {         outPutMsg(QtDebugMsg, "DataModel::updateProInfosByProNo db.error = " + db.lastError().text());         return false;     }      return true; } 
// 保存程序信息 void ClearCorner::on_edit_saveBtn_clicked() {     QStringList proInfoList;     for (int i = 0; i < modelProgram.rowCount(); i++) {         QString strTmp;         for (int j = 0; j < modelProgram.columnCount(); j++) {             QStandardItem* item = modelProgram.item(i, j);             if (j > 0) {                 strTmp += ";";             }             strTmp += item->text();         }         outPutMsg(QtDebugMsg, "ClearCorner::on_edit_saveBtn_clicked strTmp = " + strTmp);         proInfoList.append(strTmp);     }     DataModel dataModel;     bool ret = dataModel.updateProInfosByProNo(ui.edit_lineEdit_programNo->text(), proInfoList);     if (ret) {         QMessageBox::information(nullptr, "提示", "更新程序成功!");     }     else {         QMessageBox::warning(nullptr, "提示", "更新程序失败!");     } } 

相关内容

热门资讯

存在黑科技!约局吧有辅助吗(透... 存在黑科技!约局吧有辅助吗(透视)太坑了有挂(教你攻略黑科技攻略);1)约局吧有辅助吗辅助挂:进一步...
黑科技脚本!德扑统计软件(we... 黑科技脚本!德扑统计软件(we-poker)外挂透视辅助机制(安装程序教程黑科技教程)1、很好的工具...
三分钟黑科技!wpk到底有没有... 三分钟黑科技!wpk到底有没有外挂,wpk如何才能稳定长期收益,揭秘教程(有挂黑科技);人气非常高,...
苹果版黑科技!wepkoe黑科... 苹果版黑科技!wepkoe黑科技设备(透视)太坑了是有挂(玩家教程黑科技细节)1、下载好wepkoe...
黑科技攻略!wopoker辅助... 黑科技攻略!wopoker辅助v3.0(WepOke)外挂黑科技辅助脚本(玩家必备科普黑科技辅助);...
第6分钟黑科技!aapoker... 第6分钟黑科技!aapoker辅助工具使用教程,智星德州菠萝有人机吗,2025新版教程(有挂黑科技)...
软件黑科技!pokermast... 软件黑科技!pokermastersteam外挂(透视)太坑了真的有挂(科技教程黑科技脚本)poke...
黑科技安装!云扑克内置辅助器(... 1、黑科技安装!云扑克内置辅助器(wepoKe)外挂透明挂辅助插件(玩家必看攻略黑科技技巧)。2、云...
1分钟黑科技!德州之星辅助器怎... 自定义德州之星辅助器怎么用系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,...
app黑科技!wpk微扑克真的... app黑科技!wpk微扑克真的(透视)太坑了有挂(透明教程黑科技插件)1、全新机制【wpk微扑克真的...