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. 【前端开发】nrm切换淘宝镜像&nvm管理node版本及切换

    说明:nrm是切换淘宝镜像用的,nvm是node的版本切换用的(可在自己电脑安装多个版本node,便于不同项目的支持) 一.nrm的安装及常见命令: 安装nrmnpm install -g nrm 查 ...

  2. java线程分析方法

    1.查出占用资源大的线程的PID:xxxx ps -aux 2.安装java的sdk(含java虚拟机) jstack 试试是否安装成功 3.生成堆栈 jstack  -l  xxxx >> ...

  3. nginx的gzip模块详解以及配置

    文章来源 运维公会:nginx的gzip模块详解以及配置   1.gzip模块作用 gzip这个模块无论在测试环境还是生产环境都是必须要开启,这个模块能高效的将页面的内容,无论是html或者css.j ...

  4. python之csv操作

    在使用python爬虫时或者其他情况,都会用到csv存储与读取的相关操作,我们在这里就浅谈一下: CSV(Comma-Separated Values)逗号分隔符,也就是每条记录中的值与值之间是用分号 ...

  5. JAVA 多线程(一)

    进程和线程 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序,该执行顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元. 线程在控制着进程的执行. 在计算机中多 ...

  6. Dism++备份还原系统

    使用dism++备份和还原需要下载该工具,并选择与系统对应的Dism++x64或Dism++x32运行进行操作. Dism++网络下载地址:http://www.chuyu.me/zh-Hans/in ...

  7. java - day016 - IO续(输入输出), 手写双向链表

    课程回顾 对象的创建过程 类加载 加载父类,父类的静态变量分配内存 加载子类,子类的静态变量分配内存 父类静态变量赋值运算, 和静态初始化块 子类静态变量赋值运算, 和子类初始化块 创建对象 创建父类 ...

  8. jade注释

    在jade里面注释是有多种方式的 单行注释,加两个//,跟js里面一样 //h1.title#title imoock jade study => <!--h1.title#title i ...

  9. linux网络编程之socket编程(十二)

    今天继续学习socket编程,期待的APEC会议终于在京召开了,听说昨晚鸟巢那灯火通明,遍地礼花,有点08年奥运会的架势,有种冲动想去瞅见一下习大大的真容,"伟大的祖国,我爱你~~~&quo ...

  10. 接口调优——WebAPI 过滤器,IIS WebDAV

    目录 1.身份认证过滤器—AuthenticationFilter 2.Action 过滤器—ActionFilter 3.异常处理过滤器—ExceptionFilterAttribute 4.IS ...