天天看点

Qt 4下连接MySQL数据库

    前天刚装了个Qt4for windows,发现安装的时候MySQL等数据库插件都没有安装,像Qt X11版一样,都需要自己安装这些插件。

    在Qt的安装目录C:/Qt4.1.2/下,有个src目录,进入plugins/sqldrivers/mysql,可以看到两个文件,main.cpp和mysql.pro,很显然要用qmake来完成编译、生成目标。

    编

译前,首先保证依赖的MySQL头文件和库文件正确。首先MySQL安装目录下的include中的所有文件拷到qmake时能找到的目录下,接着从

lib/opt目录下拷出libmysql.a,其实lib/opt下只有libmysql.lib和libmysql.dll,从网上搜了一下找到一个

方法从libmysql.dll生成libmysql.a:

1 、安装好MySQL (如果不愿意安装,找个libmySQL.dll文件也可以)

2、下载Pexports工具

3、转换操作: pexports libmysql.dll > libmysql.def

4、使用MinGW的 dlltool转换成为libmysql.a文件。dlltool --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a -k

5、尝试是否成功:

将生成的libmysql.a 拷到qmake的lib搜索路径下后在plugins/sqldrivers/mysql目录下做:

qmake -project

qmake

make

如果再出现象mysql_connect@xx (xx是数字)的错误提示。就执行第6步。

6、修改libmysql.def文件,给mysql_connect加上@xx,即mysql_connect@xx

7、重做第4步

8、然后尝试第5步,如果还是出现错误提示。就作第6步。一直到没有错误为止。

最后C:/Qt4.1.2/plugins/sqldrivers下将会生成需要的libqsqlmysql.a和qsqlmysql.dll。

找了一个测试文件,通过。

#include <QtSql> 

#include <QtGui> 

bool createConnection(){ 

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 

db.setHostName("localhost"); 

db.setDatabaseName("test"); 

db.setUserName("test"); 

db.setPassword(""); 

if(!db.open()){ 

QMessageBox::critical(0, QObject::tr("Database Error"), 

                              db.lastError().text()); 

return false; 

QSqlQuery query; 

//query.exec("insert into book values( 3, 'title', 'author') "); 

query.exec("select title , author from book "); 

while (query.next()) { 

    QString title = query.value(0).toString(); 

    QString author = query.value(1).toString(); 

QMessageBox::critical(0, title,author); 

return true; 

int main(int argc,char** argv){ 

QApplication app(argc, argv); 

    if (!createConnection()){ 

return 1; 

    return app.exec(); 

}

原文:http://www.blogjava.net/felicity/archive/2006/08/28/66280.html

<a href="http://www.eoeandroid.com/forumdisplay.php?fid=4">国内最棒的Google Android技术社区(eoeandroid),欢迎访问!</a>