qt sql 数据库操作

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");


转载于:https://www.cnblogs.com/lvdongjie/p/3715985.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值