QT数据库连接操作基本学习教程
创始人
2024-08-01 18:40:26
0

QT数据库连接操作 数据库基本学习,QT连接数据库 是应用开发的常用基础操作。经过实验,我总结了一些例程。这些例程可以连接各种数据库。ps:这里只是我觉得好用的方法。QT另外提供了更高级的方法,如有需要请自己尝试。先来学习如何连接数据库.

连接数据库需要的头文件:

  1. #include  
  2. #include  

1、连接微软的Access

  1. QSqlDatabase ldb = QSqlDatabase::addDatabase("QODBC");  
  2. ldb.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=system.mdb;UID=;PWD=xiaozhuset");  
  3. bool ok = ldb.open();  
  4. /新定义一个查询集合,并指定 链接关键字。 如果有多个连接,可以随意指定一个你需要的。  
  5. QSqlQuery mquery=QSqlQuery::QSqlQuery(ldb);          
  6. if(ok)  
  7. {  
  8.     bool isok=mquery.exec("select * from sql_set;");  
  9.     if (!isok)  
  10.     {  
  11.         ldb.close();  
  12.         return -1;  
  13.     }         
  14.  
  15.    //这个是必须的,因为查处的结果集当前位置不在第一条记录上。  
  16.     mquery.next();  
  17.  
  18.     QString sHostName=mquery.value(1).toString();  
  19.     QString sDatabaseName=mquery.value(2).toString();  
  20.     QString sUserName=mquery.value(3).toString();  
  21.     QString sPassword=mquery.value(4).toString();  
  22.       
  23.    //清除结果集  
  24.     mquery.clear();  
  25.  // 如果该连接不再使用,就可以关闭。  
  26.     ldb.close();  
  27.  
  28.    //这里是将从数据库读出的数据写到一个list控件里  
  29.     ui.list_out->insertItem(ui.list_out->count(),sHostName);  
  30.     ui.list_out->insertItem(ui.list_out->count(),sDatabaseName);      
  31.              
  32. }  
  33. else  
  34. {   
  35.     // 打开本地数据库失败,  
  36.     QMessageBox::critical(0, QObject::tr("读取Access数据库错误!"),db.lastError().text());  
  37.     return -1;  
  38. }     

2、连接mssql2000 数据库

  1.         QString strDatabaseName = QString("DRIVER={SQL Server};Server=(%1);Database=%2").arg("local").arg(sDatabaseName);      
  2.                   
  3.         db=QSqlDatabase::addDatabase("QODBC","db"); // 使用odbc数据库驱动   
  4.         db.setHostName(sHostName);  
  5.         db.setPort(1433);  
  6.         db.setDatabaseName(strDatabaseName); // 我们之前建立的数据库连接关键字  
  7.         db.setUserName(sUserName);   
  8.         db.setPassword(sPassword);   
  9.         bool ok = db.open(); //尝试连接数据库  
  10.         if(ok)  
  11.         {   
  12.             menuset_set->dbdb=db;  
  13.             // 这里用sa已经成功连上数据库              
  14.             return 0;  
  15.         }  
  16.         else  
  17.         {   
  18.             // 打开数据库失败,  
  19.             QMessageBox::critical(0, QObject::tr("数据库连接错误!"),db.lastError().text());  
  20.             return -2;  
  21.         }          
  22. mssql2000数据库连接的使用和Access连接使用方法一样。  
  23.     QSqlQuery mquery=QSqlQuery::QSqlQuery(db);          
  24.     bool ok1=mquery.exec("select * from CarteMenu;");  
  25.     if (ok1==false)return -1;  
  26.     QString menu_mkey=mquery.value(13).toString();  
  27.     QString strmenu_lang=mquery.value(3).toString();  
  28.    //清除结果集  
  29.     mquery.clear(); 

3、连接mysql 数据库

  1. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动   
  2. db.setHostName("localhost");  
  3. db.setDatabaseName("exampledb"); // 数据库名称  
  4. db.setUserName("sa"); //  用户名  
  5. db.setPassword("1"); // 密码  
  6. bool ok = db.open(); // 尝试连接数据库  
  7. if(ok)  
  8. {   
  9.      QSqlQuery myquery;   
  10.       if(myquery.exec("select * from employeedb"))  
  11.       {   
  12.           int num = 0;   
  13.           if(db.driver()->hasFeature(QSqlDriver::QuerySize))  
  14.           {  
  15.               num = myquery.size(); // 如果支持结果影响的行数,那么直接记录下来  
  16.            }  
  17.          else  
  18.          {  
  19.               myquery.last(); //否则定位到结果最后  
  20.               num = myquery.at() + 1;  
  21.           }  
  22.           //这里添加数据库的查询结果处理操作  
  23.  
  24.     }   
  25.     else // 如果查询失败  
  26.     {   
  27.            QSqlError error = myquery.lastError();  
  28.      }  
  29.  }  
  30.  else // 打开数据库失败  
  31. {  

小结:QT数据库连接操作 数据库基本学习的内容介绍完了,希望本篇文章能够帮助你学习,想要深入了解数据库的话,请参考编辑推荐!

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...