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 // 打开数据库失败
{
}
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 // 打开数据库失败
{
}
相关文章推荐
- QT数据库连接操作基本学习教程
- QT数据库连接操作基本学习教程
- QT连接数据库的基本操作
- QT连接数据库的基本操作
- Qt与MySQL的连接与基本操作
- 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理
- asp基本操作-数据库连接-增删改查-搜索-session
- C#进阶ADO.NET基础一 基本概念、数据库连接操作基础
- 创建基本数据库连接操作
- 关于使用PDO连接数据库的一些基本操作
- JDBC 数据库连接 创建表格、插入、查询、删除、修改数据 基本操作
- [Java] JDBC 01 初步 , java 连接 数据库的基本六步操作
- JDBC 连接数据库的 基本操作 增 ,查
- [Java] JDBC 01 初步 , java 连接 数据库的基本六步操作
- Db4o数据库的连接和基本CURD操作
- Mysql 基本操作连接数据库读取信息内容
- vc连接数据库,对数据的基本操作
- Ado 连接数据库 Sql Server2000 及基本数据库操作
- Qt数据库操作 连接SQLite和MySQL数据库实例
- ADO.NET连接数据库,及基本操作