之前用c語言連了mysql資料庫,因為專案畢竟是用qt包裝的,還需要在qt的介面裡顯示,所以這一次就用qt來連一下mysql。
首先說一下我的電腦是ubuntu10.10;之前安裝了qt的linux全部套件(包括qtcreator),也安裝了嵌入式qt的那三個編譯環境(x11,x86,arm),但是這一次我只用qtcreatot裡的qmake編譯(以為之前編譯完那三個環境後,我就把編譯資料夾全刪了)。
首先,安裝mysql客戶端(mysql-devel),和c語言連線一樣,執行命令:
sudo apt-get install libmysqlclient-dev 或
sudo apt-get install libmysqlclient15-dev
因為我之前安裝過,所以這一步就省略了。
然後,連線mysql資料庫肯定要有驅動,這個在qt的原始碼裡就有:進入資料夾:
cd qtdir/src/plugins/sqldrivers/mysql 這就是qt存放mysql驅動原始碼的目錄
目錄裡應該有main.cpp 和moc_qsql_mysql.cpp兩個檔案
執行命令:
qmake -project 生成mysql.pro檔案,可能這一步會說你沒有許可權,那麼chmod給它許可權就可以了
qmake "includepath+=/usr/include/mysql" "libs+=-l/usr/lib/mysql -lmysqlclient_r" mysql.pro
/usr/include/mysql mysql所有標頭檔案所在的位置,mysql.h就在此處
/usr/lib/mysql mysql庫的位置
然後,執行命令:
make
sudo make install
此時,在qtdir/src/plugins/sqldrivers/mysql 這個目錄下,就生成了乙個檔案:libqsqlmysql.so;把它拷貝到qtdir/plugins/sqldrivers, 目錄下面;
現在開始程式設計:
隨便建工程:
加入如下**:
#include #include #include qtextstream out(stdout);to link against the module, add this line to yourqmakeqsqldatabase db = qsqldatabase::adddatabase("qmysql");
db.sethostname("localhost");
db.setdatabasename("test");
db.setusername("root");
db.setpassword("******");
if(!db.open())
qsqlquery query;
query.exec("select * from t_homedata");
while(query.next())
{qstring id = query.value(0).tostring();
qstring type = query.value(1).tostring();
qstring data = query.value(2).tostring();
out << id << ", " << type << ", " << data 《注意,這段**,是我加入到工程中的,恩,我就放在main.cpp裡;#include 這個是必須的;#include 這個是用來進行控制台列印輸出的,我的資料庫名為test,中間有乙個表叫
t_homedata,表裡有三個varchar型字段:
其列印結果為:
寫道100010, 23, 32.45
100011, 12, 99
100012, 11, 35.10
注意,再進行工程的編譯和執行之前(恩,因為我的電腦裡實際有4個qt編譯環境,所以還需要再qtcreator的project選項裡設定該項目的編譯器,我的編譯器設定為qt-opensource,即qtcreator自帶的,因為我之前所進行的mysql驅動編譯也都是再qtcreator的安裝目錄裡進行的),一定別忘了在工程的.pro檔案裡加上下面一行:
qt += sql
恩,qt 幫助文件裡就是這麼說的:
to include the definitions of the module's classes, use the following directive:
#include
.pro file:
qt += sql
Linux下MySQL遠端連線
linux下的mysql遠端連線設定 linux版本 centos6.5版本 mysql版本 5.5 因為mysql在剛剛安裝完成之後,預設不支援遠端連線,所以需要授權!授權法 grant all privileges on to 使用者名稱 identified by 登入密碼 with gran...
linux下連線mysql介面
1 需要什麼標頭檔案?include mysql inte ce s include file 2 需要什麼庫函式 usr lib mysql 3 怎麼連線到乙個已經存在的mysql資料庫?可以用mysql real connect來連線資料庫,用完後記得要用mysql close斷開這個連線.my...
qt連線mysql安全麼 Qt連線Mysql的問題
標頭檔案 include include include 工程中需要加入 qt sql 資料庫中的中文顯示為亂碼的解決方法 在main函式中加入 include qtextcodec setcodecfortr qtextcodec codecforname utf 8 qtextcodec set...