Qt5.5 连接Access2007数据库

来源:互联网 发布:家纺品牌 知乎 编辑:程序博客网 时间:2024/06/09 08:03

测试一下你的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'"
0 0
原创粉丝点击