您的位置:首页 > 编程语言 > Qt开发

QT连接数据库的基本操作

2012-11-17 14:38 519 查看
QT连接数据库 是应用开发的常用基础操作。经过实验,我总结了一些例程。这些例程可以连接各种数据库。

ps:这里只是我觉得好用的方法。QT另外提供了更高级的方法,如有需要请自己尝试。

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

#include <QSqlDatabase>

#include <QSqlQuery>

1、连接微软的Access----------------------------------------------------------------------------------------------

QSqlDatabase
ldb = QSqlDatabase::addDatabase("QODBC");

ldb.setDatabaseName("DRIVER={Microsoft
Access Driver (*.mdb)};FIL={MS Access};DBQ=system.mdb;UID=;PWD=xiaozhuset");

bool
ok = ldb.open();

//新定义一个查询集合,并指定
链接关键字。 如果有多个连接,可以随意指定一个你需要的。

QSqlQuery
mquery=QSqlQuery::QSqlQuery(ldb);

if(ok)

{

bool
isok=mquery.exec("select * from sql_set;");

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("读取Access数据库错误!"),db.lastError().text());

return
-1;

}

2、连接mssql2000 数据库--------------------------------------------------------------------------------------------

QString
strDatabaseName = QString("DRIVER={SQL Server};Server=(%1);Database=%2").arg("local").arg(sDatabaseName);

db=QSqlDatabase::addDatabase("QODBC","db");
// 使用odbc数据库驱动

db.setHostName(sHostName);

db.setPort(1433);

db.setDatabaseName(strDatabaseName);
// 我们之前建立的数据库连接关键字

db.setUserName(sUserName);

db.setPassword(sPassword);

bool
ok = db.open(); //尝试连接数据库

if(ok)

{

menuset_set->db=db;

//
这里用sa已经成功连上数据库

return
0;

}

else

{

//
打开数据库失败,

QMessageBox::critical(0,
QObject::tr("数据库连接错误!"),db.lastError().text());

return
-2;

}

mssql2000数据库连接的使用和Access连接使用方法一样。

QSqlQuery
mquery=QSqlQuery::QSqlQuery(db);

bool
ok1=mquery.exec("select * from CarteMenu;");

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("QMYSQL"); // 使用mysql数据库驱动

db.setHostName("localhost");

db.setDatabaseName("exampledb"); // 数据库名称

db.setUserName("sa"); // 用户名

db.setPassword("1"); // 密码

bool ok = db.open(); // 尝试连接数据库

if(ok)

{

QSqlQuery
myquery;

if(myquery.exec("select
* from employeedb"))

{

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 // 打开数据库失败

{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: