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

QT连接数据库

2011-06-01 20:07 232 查看
连接数据库需要的头文件:
#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 // 打开数据库失败
{

}
原文http://hi.baidu.com/%BB%D8%BB%B0%B0%C9/blog/item/e38c824a3c45dafc83025c57.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: