当前位置: 首页 > news >正文

台州自助建站在线咨询网站备案需要具备什么

台州自助建站在线咨询,网站备案需要具备什么,东莞技术支持网站建设专家,做兼职上什么网站找1. 概述 Qt 能够支持对常见数据库的操作#xff0c;例如#xff1a; MySQL、Oracle、SqlServer 等等。 Qt SQL模块中的API分为三层#xff1a;驱动层、SQL接口层、用户接口层。 驱动层为数据库和SQL接口层之间提供了底层的桥梁。 SQL接口层提供了对数据库的访问#xff0…1. 概述 Qt 能够支持对常见数据库的操作例如 MySQL、Oracle、SqlServer 等等。 Qt SQL模块中的API分为三层驱动层、SQL接口层、用户接口层。 驱动层为数据库和SQL接口层之间提供了底层的桥梁。 SQL接口层提供了对数据库的访问包括 创建 / 删除库、表执行增删改查的SQL语句。 用户接口层提供了一种更加简便的方式将数据库中的数据链接到窗口部件上。 分层类驱动层QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin和QSqlResultSQL接口层QSqlDatabase、QSqlQuery、QSqlError、QSqlField、QSqlIndex和QSqlRecord用户接口层QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel 2. 准备工作 创建项目并在 .pro 文件中加入 sql 模块: QT core gui sql 将 MySQL目录中的 libmysql.dll 和 libmysql.lib 文件复制到 Qt\5.12.3\mingw73_32\bin 目录下 如果不行则去官网自己找 MySQL :: Download MySQL Connector/C (Archived Versions)https://downloads.mysql.com/archives/c-c/   3. 链接数据库 Qt 默认支持一些驱动可以通过 QSqlDatabase::drivers() 方法查看Qt支持的驱动类型。 链接到数据库服务器需要使用 QSqlDatabase 类 主要方法 QSqlDatabase db QSqlDatabase::addDatabase(QMYSQL); // 链接MySQL服务器 db.setHostName(127.0.0.1); // 设置服务器地址 db.setPort(3306); // 设置端口号如果使用默认端口号可不调用该方法 db.setUserName(root); // 设置用户名 db.setPassword(root); // 设置密码 db.setDatabaseName(study); // 设置要操作的数据库 db.open() // 打开数据库链接返回值 bool 其他方法 db.lastError(); // 获取上一次的错误信息 返回一个 QSqlError 对象调用 text() 方法转为字符串 #include QSqlDatabase #include QSqlError #include QDebugWidget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 打印支持的数据库驱动qDebug() QSqlDatabase::drivers();QSqlDatabase db QSqlDatabase::addDatabase(QMYSQL);db.setHostName(127.0.0.1);db.setPort(3306);db.setUserName(root);db.setPassword(root);db.setDatabaseName(study);// 当数据库打开失败时提示信息if(db.open()){qDebug() 链接成功;}else{qDebug() 链接失败 db.lastError().text();} } 4. 执行SQL语句 执行 SQL 语句需要依靠 QSqlQuery 类 exec(QString sql) 方法用来执行sql语句 prepare() 方法执行预处理 execBatch() 执行预处理的SQL语句 1创建库 创建库 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 打印支持的数据库驱动qDebug() QSqlDatabase::drivers();QSqlDatabase db QSqlDatabase::addDatabase(QMYSQL);db.setHostName(127.0.0.1);db.setPort(3306);db.setUserName(root);db.setPassword(root);// 当数据库打开失败时提示信息if (!db.open()){QMessageBox::critical(this, 警告, db.lastError().text());return ;}// 创建 QSqlQuery 对象QSqlQuery query;query.exec(create database abc); // 创建库} 2删除库 query.exec(drop database abc); 3创建表 query.exec(create table student( \sno int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, \sname varchar(30) not null unique, \sage tinyint UNSIGNED, \sgender enum(男, 女) DEFAULT 男 \)ENGINEMyISAM CHARSETutf8 ); 4删除表 query.exec(drop table student); 5添加 // 添加单条数据 query.exec(insert into student values(1, 关羽, 30, 男)); query.exec(insert into student values(null, 张飞, 28, 男));// 批量添加 --- 方式1 // ? 叫做占位符 query.prepare(insert into student(sname, sage, sgender) values(?,?,?));QVariantList nameList; nameList aaa bbb ccc; QVariantList ageList; ageList 20 30 40; QVariantList genderList; genderList 男 女 男;query.addBindValue(nameList); query.addBindValue(ageList); query.addBindValue(genderList);query.execBatch();// 批量添加 - 方式2 // :xxx : 数据名称 query.prepare(insert into student(sname, sage, sgender) values(:name, :age, :gender));QVariantList nameList; nameList 小王 小张 小赵; QVariantList ageList; ageList 20 30 40; QVariantList genderList; genderList 男 女 男;query.bindValue(:name, nameList); query.bindValue(:age, ageList); query.bindValue(:gender, genderList);query.execBatch(); 6查询 // 执行查询 query.exec(select * from student);// 判断查询结果中是否有下一条数据 while (query.next()) {// value 方法用来设置列数据项结果可以继续转为具体的数据类型qDebug() query.value(0).toInt() query.value(1).toString() query.value(sage).toInt() query.value(sgender).toString(); } 7更新 query.exec(update student set sage35 where sno1);// 注意事项: 字符串字段需要加引号 QString sql QString(update student set sname%1,sage%2,sgender%3 where sno%4).arg(孙尚香).arg(20).arg(女).arg(1); query.exec(sql); 8删除 query.exec(delete from student where sno2);// 批量删除 QString sql QString(delete from student where sno in (%1)).arg(1,2,3); query.exec(sql); 9关闭数据库 db.close(); 5. 可视化操作 Qt 提供了3个类来访问数据库并且能够使用图形化方式来显示和操作数据 QSqlTableModel 创建一个可编辑的表格式数据模型注意只能应用于单表 QTableView 常见一个表格视图可以将 QSqlTableModel 创建的模型自动填充到表格中 QSqlRelationalTableModel 创建关联数据类型的数据模型 5.1 准备工作 1.使用可视化操作时也需要先进行数据库链接 // 链接数据库服务器 QSqlDatabase db QSqlDatabase::addDatabase(QMYSQL); db.setHostName(127.0.0.1); db.setPort(3306); db.setUserName(root); db.setPassword(root); db.setDatabaseName(study);if (!db.open()) {qDebug() db.lastError().text(); } 2.设置ui界面 5.2 显示表格R 目标查询 student 表中数据并显示在表格中 实现步骤 使用模型关联数据表 查询数据 关联模型和视图 // 实例化 Student 表模型 stuModel new QSqlTableModel(this);// 1. 查询所有数据 // 设置stuModel模型关联的数据表 stuModel-setTable(student); // 查询表中所有数据 stuModel-select(); // 将数据显示在视图中 ui-stuTableView-setModel(stuModel); 设置表头 // 设置表头 stuModel-setHeaderData(0, Qt::Horizontal, 学号); stuModel-setHeaderData(1, Qt::Horizontal, 姓名); stuModel-setHeaderData(2, Qt::Horizontal, 昵称); stuModel-setHeaderData(3, Qt::Horizontal, 性别); stuModel-setHeaderData(4, Qt::Horizontal, 年龄); stuModel-setHeaderData(5, Qt::Horizontal, 入学时间); stuModel-setHeaderData(6, Qt::Horizontal, 所属学院); 设置表格修改方式为手动提交 // 设置表格隔行变色 ui-tableView-setAlternatingRowColors(true);// 设置表格宽度 ui-tableView-horizontalHeader()-setSectionResizeMode(QHeaderView::Stretch);// 设置单元格修改方式 stuModel-setEditStrategy(QSqlTableModel::OnManualSubmit); 5.3 添加 实现添加需要两步 创建新行 QSqlRecord 点击 提交 按钮时将新数据提交到数据库 void Widget::on_addBtn_clicked() {// 创建新数据记录QSqlRecord record stuModel-record();// 获取数据行数int rowNum stuModel-rowCount();// 添加一条新的空数据stuModel-insertRecord(rowNum, record); } void Widget::on_pushButton_4_clicked() {stuModel-submitAll(); } submitAll 方法提交所有包含本次添加也可以包含同时修改的别的数据 5.4 删除 实现思路点击删除时获取所有选中的行的行号根据行号来执行删除 QItemSelectionModel 能够获取所有选中的行对象 QModelIndexList 能够从选中的行对象中 获取 对应的索引号 有了索引号之后就能循环从 stuModel 中进行删除 // 获取所有的选中行 QItemSelectionModel *selectedModel ui-tableView-selectionModel();// 获取选中行的行号 QModelIndexList indexList selectedModel-selectedRows();for (int i 0; i indexList.size(); i) {qDebug() i indexList[i].row();stuModel-removeRow(indexList[i].row()); } 5.5 撤销 void Widget::on_cancelModifyBtn_clicked() {stuModel-revertAll();stuModel-submitAll(); } 5.6 排列 方案一 使用 tableView 进行排列 方案二 使用 stuModel 进行排列 // 降序排列 void Widget::on_descBtn_clicked() { // ui-stuTableView-sortByColumn(0, Qt::DescendingOrder);stuModel-sort(0, Qt::DescendingOrder); } // 升序排列 void Widget::on_ascBtn_clicked() { // ui-stuTableView-sortByColumn(0, Qt::AscendingOrder);stuModel-sort(0, Qt::AscendingOrder); } 5.7 搜索 核心方法setFilter(搜索条件) 实现思路 点击搜索按钮时获取关键词 拼接模糊查找的条件调用 setFilter 进行设置 重新调用 select 方法执行查询就能将满足条件的数据显示在表格中 // 搜索 void Widget::on_searchBtn_clicked() {// 获取搜索关键词QString str ui-lineEdit-text();// 构建模糊查询QString filterStr QString(sname like %%1%).arg(str);// 过滤stuModel-setFilter(filterStr);// 查询stuModel-select(); }5.8 关联表设置 QSqlTableModel: 适合单表操作 QSqlRelationalTableModel 适合多表关联操作 stuModel new QSqlRelationalTableModel(this); stuModel-setTable(student);// 设置 student 与 dept 的关联关系 stuModel-setRelation(6, QSqlRelation(dept, dno, dname)); stuModel-select();// 设置学科列的可选项只能是 dept 表中的数据 ui-tableView-setItemDelegate(new QSqlRelationalDelegate(ui-tableView));
http://www.dnsts.com.cn/news/186739.html

相关文章:

  • 做视频后期的网站网站建设功能需求分析
  • 微信商城网站怎么做做一个网站后期维护需要做什么
  • 免费视频课程网站模板想发布oa网站 需要备案吗
  • 临沂经开区建设局网站网页设计图纸
  • 公司网站建设内容桔子seo工具
  • 什么专业可以做网站编辑网站建设网页制作多少钱
  • 公司网站空间域名建设哪个软件是网页编辑软件
  • 勐海县城乡建设局门户网站企业做国外网站多少钱
  • 小说网站风格郑州网站建设精英
  • 有趣的网站网址丹阳网站建设怎么样
  • 手机网站模板 导航wordpress建站 ftp
  • 电子政务网站课程设计wordpress文章表
  • 网页和网站是一样的吗朝阳网站
  • 做网站如何快速推广一款产品网站建设与信息安全培训小结
  • 东莞网站制作网站推广价钱网站如何做m适配
  • 在那些网站做宣传更好广告设计与制作专业需要美术功底吗
  • 手机网站 如何 推广方案设计玉溪企业网站建设公司
  • 网站设计制作费用免费ppt模板下载包图网
  • 电影网站建设基本流程广州服务好的网站推广工具
  • 电商购物网站便民网免费发布信息
  • 广府网站建设学校网站建设分工
  • 如何做自己网站lazy load wordpress
  • 汕头网站建设搭建曙光建设有限公司网站
  • 关键词库在网站上怎么体现湖南网站建设的公司排名
  • 广州做手机网站建设wordpress上传exe
  • 奇艺广州网站建设 熊掌号网站建设带后台带微商城
  • 做视频网站审核编辑有假么建设银行个人网上银行入口
  • 景区网站建设公司通过招聘网站如何做背景调查
  • 安徽省网站内链优化策略
  • 360优化大师官方网站百度个人中心登录