由于数据库实验作业规定必须要做可视化界面,所以摸鱼怪也只好继续肝 Qt 了 (;´༎ຶД༎ຶ`)
准备工作
这里的准备工作就是就是建数据库、建表、然后就是在控制面板配置 ODBC 数据源
准备内容与以前写的 VS2017操做sql server数据库 准备内容一样(除了代码操作部分)
本文也依照VS2017操做sql server数据库里的例子,列出操作的主要代码
代码实现部分
-
首先需要在新建的 Qt 工程里的 .pro 文件里引入:QT =+ sql
-
连接数据库
#include "mainwindow.h" #include <QApplication> #include <QDebug> #include <QMessageBox> #include <QSqlError> #include <QSqlDatabase> #include <QSqlQuery> void load_Database() { QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");//数据库驱动类型位sqlserver db.setHostName("localhost"); //选择本地主机,或则127.0.0.1 db.setDatabaseName("haha"); //设置数据库名称 db.setUserName("用户名"); //登录用户 db.setPassword("密码"); //密码 if(!db.open()) //打开数据库失败 { qDebug()<<db.lastError().text(); QMessageBox::critical(0,QObject::tr("Database error"),db.lastError().text()); } else { qDebug()<<"database open success!"; } }
注意:用户名和密码要改为自己的用户和密码哦,本文续用的上个例子数据库 “haha”,记得换为自己的哦!
-
插入数据
void insert_value() { QString str = QString("insert into student values(%1, '%2', %3)").arg(666).arg("宝儿姐").arg(20); QSqlQuery query; query.exec(str); }
向 “haha” 数据库 student 表插入 一行数据,或则用 prepare()函数向数据库插入数据:
void insert_value_1() { QSqlQuery query; query.prepare("insert into student(ID,name,age) values(:ID,:name,:age)"); query.bindValue(":ID",666666); //按照标识符绑定值 query.bindValue(":name","阿尔托莉雅"); query.bindValue(":age",20); query.exec(); }
-
查询数据
void search_value() { QSqlQuery query; query.exec("select * from student"); while(query.next()) //循环输出 { qDebug()<<query.value(0).toInt()<<query.value(1).toString()<<query.value(2).toInt(); } }
查询 student 里所有数据:
-
修改数据
void update_value() { QString str = QString("update student set name = '%1' where ID = %2").arg("zero-two").arg(666); QSqlQuery query; query.exec(str); }
更新数据将 ID 为 666 的 name 修改为 “zreo-two”;
-
删除数据
void delete_value() { QString str = QString("delete from student where ID = %1").arg(666); QSqlQuery query; query.exec(str); }
删除 ID 为 666 的数据:
修改、查询、删除也可以用 QSqlQuery 里的 prepare() 函数实现,步骤如同插入数据的第二种方法一样,只需修改一下sql语句。增删改查的功能已经实现,之后就是用 Qt 自带的控件获取数据信息,然后进一步实现可视化功能。