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

Qt连接数据库

2013-03-13 14:35 106 查看
1.Qt连接Access数据库方法

1)设置数据库连接信息

首先需要在.pro文件中添加

QT       += sql语句

其次添加头文件

#include <QSqlDatabase>

#include <QSqlQuery>
#include <QSqlRecord>


QString sDbNm = "F:/data.accdb";//数据库文件
db = QSqlDatabase::addDatabase("QODBC");//设置数据库驱动
QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; FIL={MS Access};DBQ=%1;").arg(sDbNm);//连接字符串
db.setDatabaseName(dsn);//设置连接字符串
db.setUserName("");//设置登陆数据库的用户名
db.setPassword("111");//设置密码


2)操作数据库数据

QStringList tables;
QString tabName,sqlString;
tables = db.tables(QSql::Tables);//获取表信息

for (int i = 0; i < tables.size(); ++i)
{
tabName = tables.at(i);//获取第i个表信息
qDebug()<<tabName;
sqlString = "select * from " + tabName;
QSqlQuery q(sqlString);            //QSqlQuery q("select * from product");
QSqlRecord rec = q.record();
int fieldCount = rec.count();
qDebug() << "Number of columns: " << fieldCount;
int i;
QString fieldName;
for(i=0;i<fieldCount;i++){
fieldName = rec.fieldName(i);
QByteArray ba = fieldName.toLatin1();
char *tmp = ba.data();
qDebug() <<tr("字段名:") << fieldName <<"\t";
}
cout<<endl;
while(q.next()){
for(int i=0;i<fieldCount;i++){
QString strTmp = q.value(i).toString();
QByteArray a = strTmp.toLatin1();
char *data = a.data();
qDebug()<<tr("姓名:")<<strTmp;
qDebug()<<"\t";
}
cout<<endl;
}
}


2.Qt连接SQL Server数据库方法

#define DB_SERVER (QProcessEnvironment::systemEnvironment().value("COMPUTERNAME") + "<a target=_blank href="file://\\SQLEXPRESS">\\SQLEXPRESS</a>")
db = QSqlDatabase::addDatabase("QODBC");
QString dsn = QString("DRIVER={SQL SERVER}")
+ ";SERVER=" + DB_SERVER
+ ";UID=" + ""
+ ";PWD=" + ""
+ ";DATABASE=student";
//如果已经设定DSN,可以写为QString::fromLocal8Bit("SQLSERVER_DSN")
qDebug() << "name = " << DB_SERVER << "\n";
db.setDatabaseName(dsn);
//即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤
db.setUserName("");
db.setPassword("");
bool r = db.open();//打开数据库


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