前天剛裝了個Qt4for windows,發(fā)現(xiàn)安裝的時候MySQL等數(shù)據(jù)庫插件都沒有安裝,像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下只有l(wèi)ibmysql.lib和libmysql.dll,從網(wǎng)上搜了一下找到一個
方法從libmysql.dll生成libmysql.a:
1 、安裝好MySQL (如果不愿意安裝,找個libmySQL.dll文件也可以)
2、下載Pexports工具
3、轉(zhuǎn)換操作: pexports libmysql.dll > libmysql.def
4、使用MinGW的 dlltool轉(zhuǎn)換成為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
如果再出現(xiàn)象mysql_connect@xx (xx是數(shù)字)的錯誤提示。就執(zhí)行第6步。
6、修改libmysql.def文件,給mysql_connect加上@xx,即mysql_connect@xx
7、重做第4步
8、然后嘗試第5步,如果還是出現(xiàn)錯誤提示。就作第6步。一直到?jīng)]有錯誤為止。
最后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.tkk7.com/felicity/archive/2006/08/28/66280.html
新浪微博:http://t.sina.com.cn/androidguy 昵稱:李寧_Lining