在Windows下面利用QT开发数据库应用,如MYSQL,首先,我们必须利用源码编译MYSQL驱动库;
1)安装qt-sdk-win-opensource-2010.02.1.exe
此时,QT安装了QT Creator,假定目录为:
E:/Qt/2010.02.1/,可以选择安装MingW;
此时,E:/Qt/2010.02.1/QT为Qt库的安装位置;
2)安装MySQl,假定目录为:
include 路径为:D:/MySQL/MySQL Server 5.0/include
lib路径为:D:/MySQL/MySQL Server 5.0/lib/opt
由于两路径还有空格;拷贝至C:/mysql文件夹下;
3)将E:/Qt/2010.02.1/QT/bin 和MINGW/bin加入到PATH中;
4)cd E:/Qt/2010.02.1/qt/src/plugins/sqldrivers/mysql文件夹
运行:
E:/Qt/2010.02.1/qt/src/plugins/sqldrivers/mysql>qmake -o Makefile "INCLUDEPA
TH+=C:/mysql/INCLUDE" "LIBS+=C:/mysql/lib/opt/libmysql.lib" mysql.pro
nmake
在E:/Qt/2010.02.1/qt/plugins/sqldrivers下生成MYSQL的驱动;
编写数据库访问代码:
- QSqlDatabase db=QSqlDatabase::addDatabase( "QMYSQL" );
- db.setHostName("127.0.0.1" );
- db.setPort(3306);
- db.setDatabaseName("test" );
- db.setUserName("root" );
- db.setPassword("**********" );
- if (!db.open()){
- QMessageBox::warning(this , "warning!" , "failure" );
- }else {
- QMessageBox::information(this , "OK!" , "success!" );
- }
访问成功;
下面是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'"