天天看點

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>