Lv.的博客

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


posted @ 2014-05-08 13:32  Avatarx  阅读(5578)  评论(0编辑  收藏  举报