QT与数据库连接实例
本文介绍的是QT与数据库连接实例,首先加载驱动db=QSqlDatabase::addDatabase("QODBC","db"); // 使用odbc数据库驱动,详细内容请看下文。连接数据库需要的头文件:
[*]#include <QSqlDatabase>
[*]#include <QSqlQuery>
1、连接微软的Access
[*]QSqlDatabase ldb = QSqlDatabase::addDatabase(&quot;QODBC&quot;);
[*]ldb.setDatabaseName(&quot;DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=system.mdb;UID=;PWD=xiaozhuset&quot;);
[*]bool ok = ldb.open();
[*]//新定义一个查询集合,并指定 链接关键字。 如果有多个连接,可以随意指定一个你需要的。
[*]QSqlQuery mquery=QSqlQuery::QSqlQuery(ldb);
[*]if(ok)
[*]{
[*]bool isok=mquery.exec(&quot;select * from sql_set;&quot;);
[*]if (!isok)
[*]{
[*]ldb.close();
[*]return -1;
[*]}
[*]//这个是必须的,因为查处的结果集当前位置不在第一条记录上。
[*]mquery.next();
[*]QString sHostName=mquery.value(1).toString();
[*]QString sDatabaseName=mquery.value(2).toString();
[*]QString sUserName=mquery.value(3).toString();
[*]QString sPassword=mquery.value(4).toString();
[*]//清除结果集
[*]mquery.clear();
[*]// 如果该连接不再使用,就可以关闭。
[*]ldb.close();
[*]//这里是将从数据库读出的数据写到一个list控件里
[*]ui.list_out->insertItem(ui.list_out->count(),sHostName);
[*]ui.list_out->insertItem(ui.list_out->count(),sDatabaseName);
[*]}
[*]else
[*]{
[*]// 打开本地数据库失败,
[*]QMessageBox::critical(0, QObject::tr(&quot;读取Access数据库错误!&quot;),db.lastError().text());
[*]return -1;
[*]}
2、连接mssql2000 数据库
[*]QString strDatabaseName = QString(&quot;DRIVER={SQL Server};Server=(%1);Database=%2&quot;).arg(&quot;local&quot;).arg(sDatabaseName);
[*]db=QSqlDatabase::addDatabase(&quot;QODBC&quot;,&quot;db&quot;); // 使用odbc数据库驱动
[*]db.setHostName(sHostName);
[*]db.setPort(1433);
[*]db.setDatabaseName(strDatabaseName); // 我们之前建立的数据库连接关键字
[*]db.setUserName(sUserName);
[*]db.setPassword(sPassword);
[*]bool ok = db.open(); //尝试连接数据库
[*]if(ok)
[*]{
[*]menuset_set->dbdb=db; // 这里用sa已经成功连上数据库
[*]return 0;
[*]}
[*]else
[*]{
[*]// 打开数据库失败,
[*]QMessageBox::critical(0, QObject::tr(&quot;数据库连接错误!&quot;),db.lastError().text());
[*]return -2;
[*]}
[*]mssql2000数据库连接的使用和Access连接使用方法一样。
[*]QSqlQuery mquery=QSqlQuery::QSqlQuery(db);
[*]bool ok1=mquery.exec(&quot;select * from CarteMenu;&quot;);
[*]if (ok1==false)return -1;
[*]QString menu_mkey=mquery.value(13).toString();
[*]QString strmenu_lang=mquery.value(3).toString();
[*]//清除结果集
[*]mquery.clear();
3、连接mysql 数据库
[*]QSqlDatabase db = QSqlDatabase::addDatabase(&quot;QMYSQL&quot;); // 使用mysql数据库驱动
[*]db.setHostName(&quot;localhost&quot;);
[*]db.setDatabaseName(&quot;exampledb&quot;); // 数据库名称
[*]db.setUserName(&quot;sa&quot;); // 用户名
[*]db.setPassword(&quot;1&quot;); // 密码
[*]bool ok = db.open(); // 尝试连接数据库
[*]if(ok)
[*]{
[*]QSqlQuery myquery;
[*]if(myquery.exec(&quot;select * from employeedb&quot;))
[*]{
[*]int num = 0;
[*]if(db.driver()->hasFeature(QSqlDriver::QuerySize))
[*]{
[*]num = myquery.size(); // 如果支持结果影响的行数,那么直接记录下来
[*]}
[*]else
[*]{
[*]myquery.last(); //否则定位到结果最后
[*]num = myquery.at() + 1;
[*]}
[*]//这里添加数据库的查询结果处理操作
[*]}
[*]else // 如果查询失败
[*]{
[*]QSqlError error = myquery.lastError();
[*]}
[*]}
[*]else // 打开数据库失败
[*]{
[*]}
小结:QT与数据库连接实例的内容介绍完了,对于数据库,本人觉得连接时要慎重点,好像很难连接似得,老是出错,不顾本篇文章相信能帮你解决问题。
【编辑推荐】
[*]在VS2008中使用Qt编程
[*]QT VS2008开发环境
[*]解析Visual Studio 2005中QT配置使用
[*]Qt数据库之添加MySQL驱动插件
[*]在linux下QT连接Mysql数据库
[*]Qt 4.7.2之VS2008集成环境搭建
[*]使用 Qt 与 Visual C++ 2008 创建应用程序事例
页:
[1]