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

Qt5.5 连接Access2007数据库

2015-08-03 12:33 441 查看

测试一下你的QT目前支持哪些数据库访问。

#include <QCoreApplication>
#include <QSqlDatabase>
#include <QStringList>
#include <QDebug>
#include <QStringList>
#include <QSqlError>
#include <QSqlIndex>
#include <QSqlRecord>
#include <QSqlQuery>
#include <QVariant>
#include <QSqlDatabase>
#include <QSqlError>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "test");
qDebug() << "ODBC driver valid?" << db.isValid();
}


输出:

Available drivers:

“QSQLITE”

“QMYSQL”

“QMYSQL3”

“QODBC”

“QODBC3”

“QPSQL”

“QPSQL7”

ODBC driver valid? true

“[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect”

要注意的就是连接数据库时使用的数据库名,和sqlite等是不同的,并不是直接写入数据库名称,而是DSN名.

设置DSN ,查看本机数据源中access对应的驱动,在 dns 字符串中将 DRIVER 的值替换相应驱动.

控制面板-管理工具-数据源(ODBC)

QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=C:/DataBase/test.mdb");
db.setDatabaseName(dsn);
db.setPassword("123");

bool ok = db.open();

QString out_str;
QTextStream out(stdout);
QSqlError err;
QSqlRecord record;

if(ok){
qDebug() << "Access Connect OK!";
qDebug() << db.lastError().text();
}else{
qDebug() << "Access Connect Fail!";
out_str="open fail\n";
out << out_str <<endl;
err = db.lastError();
out_str = err.databaseText();
out << out_str <<endl;
out_str = err.driverText();
out << out_str <<endl;
}


下面是ODBC和OLEDB的连接字符串写法:

ODBC连接

适合数据库类型 连接方式

access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"


dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"


oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"


MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"


MS text "Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"


Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"


MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"


SQLite "Driver={SQLite3 ODBC Driver};Database=D:\SQLite\*.db"


PostgreSQL "Driver={PostgreSQL ANSI};server=127.0.0.1;uid=admin;pwd=pass;database=databaseName"


OLEDB连接

适合的数据库类型 连接方式

access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"


oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"


MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"


MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties'text;FMT=Delimited'"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: