一:QT与数据库的连接(通过ODBC)

首先在SQL数据库中设置用户名及密码后通过控制面板查找ODBC根据提示完成对QT的连接

;接下来到qt的main.cpp中输入:

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");

//数据库驱动类型为SQL Server,a为设置的数据库名称,可以随便写

qDebug()<<"ODBC driver?"<<db.isValid();

db.setHostName("127.0.0.1"); // 选择本地主机,127.0.0.1(无需修改)

QString dsn = QString::fromLocal8Bit("water_check2");//数据源名称, 【根据自己在ODBC上设置的名称】

db.setHostName("localhost");

db.setDatabaseName(dsn); //设置数据源名称(不用改)

db.setUserName("sa"); //登录用户【自己设置的数据库用户名】

db.setPassword("123456789"); //【自己设置的数据库用户名密码

if(!db.open()) //打开数据库

{

qDebug()<<"error";

qDebug()<<db.lastError().text();

QMessageBox::critical(0, QObject::tr("Database error"), db.lastError().text()); //打开失败

}

else

{

qDebug()<<"database open success!";

}

// QSqlQuery query();//打开数据库,若只有一个数据库连接,直接默认打开有两个需输入上面设置的名字a

QSqlQuery query;

query=QSqlQuery(db);

return a.exec();

二:qt页面跳转设置

点击文件->新建文件或项目->选择QT->QT item Model根据提示修改项目名称

选用load作为示例:在laod.ui中设置Push Button 单击右键选择转入槽

选用load作为示例:在laod.ui中设置Push Button 单击右键选择转入槽在槽函数中加入:

this->hide();

emit returnmain(); //隐藏当前页面

并在load.h中

signals:

void returnmain();//跳转页面的信号与上文中槽函数发射的信号相同

在main.cpp中加入头文件

#include<load.h>

并在main()函数中写上

load loadpage;//定义一个变量

loadpage.setWindowTitle("主页(load)");

//当按下时从load返回个人信息页

QObject::connect(&loadpage,SIGNAL(information()),&informpage,SLOT(in()));

同理在要跳入的做如下设置:

在main.cpp中加入头文件

#include"inform.h"

加上

inform informpage;

informpage.setWindowTitle("个人信息页(inform)");

并在inform.h中的private slots:下写上

void in(); //接受槽

 三:数据库的查询:

3.1:查询整个表中数据:

QSqlQueryModel *model2 = new QSqlQueryModel(this);

model2->setQuery(QString("select * from CUST "));

ui->tableView->setModel(model2);

3.2 条件查询

方法一:

QString s1,s2,cno0;//定义QString类型变量

s1=ui->ok->text();

s2=ui->lineEdit_2->text();//获取输入的文本信息

int t=s1.toInt();

//在数据库中查询所有信息

QSqlQueryModel *model2 = new QSqlQueryModel(this);

model2->setQuery(QString("select * from order1 "));

//查询结果显示在table view上

ui->tableView->setModel(model2);

QSqlQuery query("SELECT * FROM order1 ");

qDebug()<<"订单编号 份数 单价 顾客编号 报刊编号"; // OPeration

while (query.next())

{

QString ID = query.value(0).toString();

QString LoginName = query.value(1).toString();

QString LoginTime = query.value(2).toString();

QString LogoutTime = query.value(3).toString();

QString youbian = query.value(4).toString();

int x=QString::compare(LogoutTime,s2,Qt::CaseInsensitive);//区分大小写

qDebug()<<x<<" "<<QString("%1").arg(s2);

qDebug()<<QString("%1 %2 %3 %4 %5")

.arg(ID).arg(LoginName).arg(LoginTime).arg(LogoutTime).arg(youbian);

if(x==1){

qDebug()<<"true";

ui->lineEdit_3->setText(ID);

ui->lineEdit_5->setText(LoginName);

ui->lineEdit_6->setText(LoginTime);

ui->lineEdit_4->setText(youbian);

}

 方法二:

QString sql,s1;

int s2,s3;

s1=ui->lineEdit->text();//读取文本内容

s2=ui->lineEdit_2->text().toInt();

s3=ui->lineEdit_3->text().toInt();

//查询数据库中是否有相应编号的报刊,并输出总价

QSqlQueryModel *model=new QSqlQueryModel(this);

model->setQuery(QString("select PPR from NEWS where PNO=%1").arg(s1));

三修改数据库:先获取文本了个信息

QSqlQueryModel *model2 = new QSqlQueryModel(this);

model2->setQuery(QString("select * from CUST "));

ui->tableView->setModel(model2);

QString name=ui->lineEdit->text();

QString address=ui->lineEdit_2->text();

QString numb=ui->lineEdit_3->text();

QString you=ui->lineEdit_4->text();

三:数据修改

方法一:

QSqlQuery query;
 QString sql=QString("update CUST set CAD='%1' , CTE='%2' ,CPO='%3' where CNA='%4';")
               .arg(address).arg(numb).arg(you).arg(name);
query.prepare(sql);

if(query.exec()){
      QMessageBox::information(this,"修改成功","修改完成");
}
else{
    QMessageBox::information(this,"修改失败","修改失败!!");

}

方法二:

QSqlQuery query;

query.prepare("update CUST set CAD=:address ,CTE=:numb ,CPO=:you where CNA=:name;");

query.bindValue(":name",name);

query.bindValue(":address",address);

query.bindValue(":numb",numb);

query.bindValue(":you",you);

bool ok = query.exec();

qDebug()<<"****"<<query.lastError();

if(!ok){

QMessageBox::information(this,"修改失败","修改失败!!");

}

else{

QMessageBox::information(this,"修改成功","修改完成");

QT与数据库的连接,查询和修改相关推荐

  1. Oracle数据库表连接查询并分页SQL语句提示未明确定义列

    Oracle数据库表连接查询并分页SQL语句提示未明确定义列 两张表中的字段: t_product t_category product_id category_id product_name cat ...

  2. 实验4 数据库的连接查询

    实验4 数据库的连接查询 4.1实验目的及要求 掌握简单表的数据查询.数据排列和表链接查询的操作方法 4.2实验内容 简单查询操作和连接查询操作. 4.3实验步骤 4.3.1连接查询 1.查询每个学生 ...

  3. MySQL数据库右连接查询right join ... on

    1. 右连接查询 以右表为主根据条件查询左表数据,如果根据条件查询左表数据不存在使用null值填充. 右连接查询效果图: 右连接查询语法格式: select 字段 from 表1 right join ...

  4. MySQL数据库左连接查询left join ... on

    1. 左连接查询 以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在使用null值填充 左连接查询效果图: 左连接查询语法格式: select 字段 from 表1 left join 表 ...

  5. mysql与java连接查询_【java】MySQL数据库之连接查询

    连接查询 首先来认识一个叫笛卡尔积 (cartesian product) 的东东,也可以叫直积. 假设我们有一个集合 A = {a, b}, 还有一个集合B = {0, 1, 2} ,那么这两个两集 ...

  6. 数据库左连接查询时候的技巧.

    近来公司需要导出大批量的数据,还用到了左连接查询,发现速度特别慢,求助同事,然后学到了这个技巧,主表左连接查询时会遍历主表自身,而如果被左连接的表查询条件不是主键的话,被连接的表也会遍历自身,这时候需 ...

  7. 数据库---四中连接查询(交叉、左连接、右连接、完整查询)

    个人博客 :https://www.siyuan.run CSDN:https://blog.csdn.net/siyuan 微信小程序:思远Y 1.交叉连接查询 : (基本不适用---得到的是两张表 ...

  8. FULL JOIN 数据库全连接查询SQL

     -- 普通查询 SELECT T1.NAME , T2.ORDERNO   FROM TABLE_NAME1 T1 , TABLE_NAME T2  WHERE T1.ID = T2.T1_ID ...

  9. 关乎mysql数据库的连接查询和子查询的效率问题

    前言:正常情况下,连接查询是比子查询效率要高的,因为子查询需要创建临时表.但是,在实际测试中,有部分情况子查询效率会比连接查询要高 1:去重的情况下 ①连接查询 SELECTDISTINCT itm. ...

最新文章

  1. 丢失/root目录导致命令行-bash-4.1#,解决方法
  2. php播放音乐视频,html5停止(暂停)当前播放的音频或视频的方法pause()
  3. 第174天:面向对象——公有属性、私有属性和静态属性
  4. 利用 C++ Interop 封装 ISO C++ 对象, 供其他 .Net 语言使用
  5. Python面试题(二)列表去重,单例
  6. 手机端页面自适应解决方案-rem布局
  7. WinForm(二) WinForm进阶与复杂控件使用
  8. 无源三端口器件特性分析-《微波工程》
  9. dos命令中DATE:~0,10输出日期格式名称格式/改为-
  10. mysql基础学习--day7
  11. 美工设计怎样可以提高自己设计能力
  12. 广义最小二乘法的基本思想是什么_解决异方差问题的方法可行广义最小二乘法fgls法.ppt...
  13. 文件服务器整机克隆,云服务器镜像克隆
  14. 麻将番型计算(二人麻将)
  15. QT 绘图橡皮擦效果的实现
  16. 结对编程之经验教训总结
  17. 程序员把妹指南之电脑配置篇
  18. 一款c语言实现的赛车游戏
  19. 使用机器学习预测波士顿房价
  20. LabVIEW 严格类型VI

热门文章

  1. 收费邮箱与鸡蛋汤。。。
  2. fit,transform,fit_transform详解
  3. 下载文件出现提示框或者直接显示在浏览器中
  4. IDEA 2019 图文教程: 从入门到上瘾教程
  5. 小米平板5配置参数 小米平板5怎么样?测评值得买吗?
  6. coreldraw2019安装教程
  7. a padding to disable MSIE and Chrome friendly error page
  8. 散列算法和哈希表结构
  9. java开源项目及spring微服务架构
  10. 浅谈如何提高企业核心凝聚力