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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM