all gone

          all gone

          Qt 4下連接MySQL數(shù)據(jù)庫

          前天剛裝了個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()
          ;?


          }?

          posted on 2006-08-28 20:57 all gone 閱讀(2736) 評論(0)  編輯  收藏 所屬分類: C & C++


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 赤壁市| 东城区| 永康市| 唐山市| 合阳县| 汤原县| 宜章县| 弥渡县| 久治县| 昭通市| 渑池县| 普陀区| 牙克石市| 沧源| 盈江县| 武宁县| 马公市| 长宁县| 秦皇岛市| 武胜县| 通河县| 沾益县| 阳泉市| 临沭县| 仪陇县| 张家口市| 长兴县| 岑溪市| 水富县| 崇文区| 平泉县| 卢湾区| 开封县| 商河县| 宜州市| 嵊州市| 卓资县| 措勤县| 阆中市| 余江县| 阿鲁科尔沁旗|