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

QT连接数据库

2012-12-22 10:34 176 查看

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

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

{

}

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