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'"
相关文章推荐
- QT中编译时出现main.cpp: No such file or directory
- QtSQL SERVER连接数据库
- Qt中在槽函数中获取QListWidget中的各个部件
- Qt 5.3 下OpenCV 2.4.11 开发(8)查表法直方图修改图像
- QT快捷键
- 【Qt OpenGL教程】08:混合
- Qt与QtWebKit
- Ubuntu 下搭建Qt Webkit(三)
- Ubuntu 下搭建Qt Webkit(二)
- Ubuntu 下搭建Qt Webkit(一)
- Qt 判断一个IP地址是否有效
- 【Qt OpenGL教程】07:光照和键盘控制
- QT安装以及环境配置
- ubuntu安装qt库
- 小布老师QTP视频
- 【Qt OpenGL教程】06:纹理映射
- QT模块简介
- 【Qt OpenGL教程】05:3D模型
- QT中文乱码的问题
- 【Qt OpenGL教程】04:旋转