qt sql 数据库操作
2014-05-08 13:32
387 查看
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(2);
}
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(2);
}
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(0).toString();
data.*=query.value(1).toInt();
data.*=query.value(2).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获取设置窗口的布局管理器
- linux下QT编程学习笔记——配置文件的读写
- QT编译项目错误:lnk1123转换到coff期间失败文件无效或损坏
- Qt close hide reject等
- QT平台上的Json解析
- QT支持中文
- Qt002 - Qt4.8.5+VS2008在Qt项目中添加资源文件(.qrc)
- 编译qte版本的qwt出错问题
- Qt001 - Qt的多语言支持
- qt 2D绘图技巧
- 自定义QToolButton
- QT、QTE、qtopia区别
- QT210 4.0 u-boot kernel android 源代码分享
- qt210 u-boot 启动
- Windows下建立QT开发环境
- Qt5中文乱码解决方法
- 用Qt开发Symbian应用程序总结
- 在Mac下使用QT调用OpenCV产生error: symbol(s) not found for architecture x86_64错误
- VS2013+QT5.3 中文乱码问题 解决方案
- Qt之再谈阴影边框