1.  连接数据库

mysql连接:

QSqlDatabase mysql_db=QSqlDatabase::addDatabase("QMYSQL","mysql_connecttion2");

mysql_db.setHostName("127.0.0.1");
mysql_db.setDatabaseName("数据库名称");
mysql_db.setUserName("用户名");
mysql_db.setPassword("用户密码");
mysql_db.setPort(数据库端口);// 默认3306
if(!mysql_db.open())
{

printf("mysql_db%s\n",qPrintable(mysql_db.lastError().text()));
exit();
}
else
{
qDebug("mysql_db连接成功");
mysql_db.exec("SETNAMES'GBK'");
}
sqlserver连接:
sqlserver_db=QSqlDatabase::addDatabase("QODBC","sqlserver_connecttion2");

sqlserver_db.setHostName("127.0.0.1");

QStringdsn=QString::fromLocal8Bit("DRIVER={SQLSERVER};SERVER=127.0.0.1;DATABASE=数据库名");

sqlserver_db.setDatabaseName(dsn);

sqlserver_db.setUserName(用户名称);

sqlserver_db.setPassword(用户密码);

if(!sqlserver_db.open())

{

printf("sqlserver_db%s\n",qPrintable(sqlserver_db.lastError().text()));

exit();

}

else

{

qDebug("sqlserver连接成功");

sqlserver_db.exec("SETNAMES'GBK'");//访问windows服务器时候使用,中文字符处理
}
2. 数据库发起重连
if(QSqlDatabase::contains("mysql_connecttion2"))

{

mysql_db.commit();

mysql_db.close();

}

if(!mysql_db.open())

{

printf("mysql_db%s\n",qPrintable(mysql_db.lastError().text()));

open_mysql();

}

else

{

qDebug("mysql_db连接成功");

mysql_db.exec("SETNAMES'GBK'");

}

3. 数据库操作
mysql_db=QSqlDatabase::database("mysql_connecttion2");
if(mysql_db.isOpen()&&mysql_db.isValid()&&mysql_db.isDriverAvailable("QMYSQL"))
;//qDebug()<<"mysqlisopen";
else
{
qDebug()<<"mysqlisnotopen";
open_mysql();
}
//查询数据
QSqlQueryquery(mysql_db);
query.prepare("select * from tmpt wheret ...;");
if(query.exec())
{
//提取表中的数据
while(query.next())
{
DataStruct data;
data.*=query.value().toString();
data.*=query.value().toInt();
data.*=query.value().toDouble();

}
//删除表中的数据
query.clear();
foreach(DataStructdata,*datalist)
{
query.prepare("delete from tmpt where ...;");
query.bindValue(...);
if(query.exec())
{
qDebug()<<"删除"<<data.user;
}
else
{
qDebug()<<tr("删除历史数据失败")<<query.lastError().text();
open_mysql();
}
}
}
else
{
qDebug()<<query.lastError().text();
open_mysql();
}
query.clear();
4. 关闭数据库
mysql_db.commit();
mysql_db.close();
if(QSqlDatabase::contains("mysql_connecttion2"))
QSqlDatabase::removeDatabase("mysql_connecttion2");
sqlserver_db.commit();
sqlserver_db.close();
if(QSqlDatabase::contains("sqlserver_connecttion2"))
QSqlDatabase::removeDatabase("sqlserver_connecttion2");
												

qt sql 数据库操作的更多相关文章

  1. 界面编程之QT的数据库操作20180801

    /*******************************************************************************************/ 一.数据库连 ...

  2. 【转载】QT MySQL数据库操作总结

    转载自http://blog.chinaunix.net/uid-28194872-id-3631462.html #include <QtSql> QT += sqlQSqlDataba ...

  3. qt 5 数据库操作(mysql)

    其实大家都知道,QT5以上的都自带了数据库驱动,所以呢,基本上可以直接使用,于是如果想知道怎么连接数据库,请参考这位大神写的.http://qtdebug.com/DB-AccessMySQL.htm ...

  4. 个人博客设计:创建Sql数据库操作类。

    整体的博客框架如下 数据库操作java类如下 package com.yxq.dao; import java.sql.Connection; import java.sql.DriverManage ...

  5. HTML5 Web SQL 数据库操作

    Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs. 以下是规范中定义的三个核心方法: openDataba ...

  6. SQL数据库操作(CURD)

    对数据仓库的操作(CURD): 新增:  create database db_test; 新增的时候设置编码: create database da_test_1 character set utf ...

  7. SQL数据库操作整理

    1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATA ...

  8. qt sql事务操作

    事务是数据库的一个重要功能,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位.在Qt中用transaction()开始一个事务操作,用commit()函数或 ...

  9. 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理

     Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan ...

随机推荐

  1. ChibiOS/RT移植到STM32F407

    官网地址:http://www.chibios.org/dokuwiki/doku.php 下载源码 找到STM32F407的demos程序(chibios\demos\STM32\RT-STM32F ...

  2. 【JUC】1.线程

    先复习一下线程的东西: Java线程的内存模型 主内存与工作内存 Java内存模型主要定义了程序中各个变量的访问规则 所有的变量都在主内存,Java堆(线程共享) 每条线程都有自己的工作内存,虚拟机栈 ...

  3. 动态URL是什么?动态URL有什么特点?

    动态URL是什么动态URL就是动态页面,动态链接,即指在URL中出现“?”这样的参数符号,并以aspx.asp.jsp.php.perl.cgi为后缀的url. 动态URL有什么特点1.在建设反向链接 ...

  4. 【转载】抓包工具tcpdump用法说明

    转载地址:http://www.cnblogs.com/f-ck-need-u/p/7064286.html tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上. ...

  5. Ubuntu apt-get锁定问题

  6. ECU 自动化生产测试系统

    概述 ECU(Electronic Control Unit) 是现代车辆中最重要的部件之一,其稳定性.可靠性对车辆安全性的影响至关重要.如何保证ECU 生产质量和效率.如何在生产过程中对ECU 进行 ...

  7. Socket实现client和server端通信(Java)(转)

    转自: https://blog.csdn.net/yayun0516/article/details/50819147 https://www.jianshu.com/p/2d4f223f1462 ...

  8. JDBC课程2--实现Statement(用于执行SQL语句)--使用自定义的JDBCTools的工具类静态方法,包括insert/update/delete三合一

    /**JDBC课程2--实现Statement(用于执行SQL语句) * 1.Statement :用于执行SQL语句的对象: * 1): 通过Connection 的createStatement( ...

  9. 男上加男团队对 修!咻咻! 团队,云打印 团队的Beta产品测试报告

    男上加男团队对 修!咻咻! 团队的Beta产品测试报告 男上加男团队对云打印 团队的Beta产品测试报告 6.2 1.57分补充 睡觉前看终于看到发布的在线版本 重新测试了一下 卡在注册这关 无法收到 ...

  10. dt7.0百度熊掌当天主动推送方法

    因自己没事新做了一个网站,申请了一个熊掌号,所以做了这个主动推送接口,希望能收录快些,在此分享下关于DT7.0主动当天推送功能 上代码: <?php /* 百度当天主动推送熊掌功能 作者:68喜 ...