自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在linux下QT連接Mysql數(shù)據(jù)庫(kù)

移動(dòng)開發(fā)
本文介紹的是在linux下QT連接Mysql數(shù)據(jù)庫(kù),MySQL數(shù)據(jù)庫(kù)是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。

之前用 C 語(yǔ)言連了mysql數(shù)據(jù)庫(kù),因?yàn)轫?xiàng)目畢竟是用QT包裝的,還需要在qt的界面里顯示,所以這一次就用QT來(lái)連一下mysql。

首先說(shuō)一下我的電腦是ubuntu10.10;之前安裝了QTlinux全部套件(包括QT creator),也安裝了嵌入式qt的那三個(gè)編譯環(huán)境(X11,X86,ARM),但是這一次我只用QT creatot里的qmake編譯(以為之前編譯完那三個(gè)環(huán)境后,我就把編譯文件夾全刪了)。

首先,安裝mysql客戶端(mysql-devel),和C語(yǔ)言連接一樣,執(zhí)行命令:

  1. sudo apt-get install libmysqlclient-dev   
  2. 或   
  3. sudo apt-get install libmysqlclient15-dev  

因?yàn)槲抑鞍惭b過(guò),所以這一步就省略了。

然后,連接linux數(shù)據(jù)庫(kù)肯定要有驅(qū)動(dòng),這個(gè)在qt的源碼里就有:進(jìn)入文件夾:

  1. cd   QTDIR/src/plugins/sqldrivers/mysql                      //這就是qt存放mysql驅(qū)動(dòng)源碼的目錄 

目錄里應(yīng)該有main.cpp 和moc_qsql_mysql.cpp兩個(gè)文件

執(zhí)行命令:

  1. qmake  -project  //生成mysql.pro文件,可能這一步會(huì)說(shuō)你沒(méi)有權(quán)限,那么chmod給它權(quán)限就可以了  
  2. qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro   
  3. /usr/include/mysql   // mysql所有頭文件所在的位置,mysql.h就在此處  
  4. /usr/lib/mysql            //mysql庫(kù)的位置 

然后,執(zhí)行命令:

  1. make  
  2. sudo make install 

此時(shí),在QTDIR/src/plugins/sqldrivers/mysql  這個(gè)目錄下,就生成了一個(gè)文件:libqsqlmysql.so;把它拷貝到QTDIR/plugins/sqldrivers, 目錄下面;

現(xiàn)在開始編程:隨便建工程:加入如下代碼:

  1. #include <QtSql>    
  2. #include <QMessageBox>    
  3. #include <QTextStream>    
  4. QTextStream out(stdout);    
  5. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");    
  6. db.setHostName("localhost");    
  7. db.setDatabaseName("test");    
  8. db.setUserName("root");    
  9. db.setPassword("xxxxxx");    
  10. if(!db.open())    
  11. {    
  12.  QMessageBox::critical(0,QObject::tr("Database Error"),db.lastError().text());    
  13. return a.exec();    
  14. }    
  15. QSqlQuery query;    
  16. query.exec("SELECT * FROM t_homedata");    
  17. while(query.next())    
  18. {    
  19. QString id = query.value(0).toString();    
  20.  QString type = query.value(1).toString();    
  21. QString data = query.value(2).toString();    
  22. out << id << ", " << type << ", " << data <<endl;    
  23. }   

注意,這段代碼,是我加入到工程中的,恩,我就放在main.cpp里;#include <QtSql>這個(gè)是必須的;#include <QTextStream>這個(gè)是用來(lái)進(jìn)行控制臺(tái)打印輸出的,我的數(shù)據(jù)庫(kù)名為test,中間有一個(gè)表叫t_homedata,表里有三個(gè)varchar型字段:其打印結(jié)果為:

  1. 100010, 23, 32.45  
  2. 100011, 12, 99  
  3. 100012, 11, 35.10 

注意,再進(jìn)行工程的編譯和運(yùn)行之前(恩,因?yàn)槲业碾娔X里實(shí)際有4個(gè)qt編譯環(huán)境,所以還需要再Qt creator的project選項(xiàng)里設(shè)置該項(xiàng)目的編譯器,我的編譯器設(shè)置為qt-opensource,即Qt  creator自帶的,因?yàn)槲抑八M(jìn)行的mysql驅(qū)動(dòng)編譯也都是再Qt creator的安裝目錄里進(jìn)行的),一定別忘了在工程的.pro文件里加上下面一行:

  1. QT  += sql 

Qt 幫助文檔里就是這么說(shuō)的:

  1. To include the definitions of the module's classes, use the following directive:  
  2.  #include <QtSql> 
  3. To link against the module, add this line to your qmake .pro file:  
  4.  QT += sql  
  5. define DRIVER       "QMYSQL3"  /* see the Qt SQL documentation for a list of available drivers */  
  6.  define DATABASE     ":dehua:" /* the name of your database */  
  7.  define USER         "root"   /* user name with appropriate rights */  
  8.  define PASSWORD     "password"   /* password for USER */  
  9.  define HOST         "http://192.168.10.14" /* host on which the database is running */  
  10.  bool ServerInfo::connMysql(int csID, QString msg)  
  11.  {  
  12.    MYSQL mysql;  
  13.    char host[32]="localhost";  
  14.    char user[32]="root";  
  15.    char passwd[32]="password";  
  16.    char dbname[32]="dehua";   
  17.    QString sql;  
  18.    
  19.    if( mysql_init(&mysql) == NULL ) /*初始化數(shù)據(jù)結(jié)構(gòu)*/  
  20.    {  
  21.      syslog(LOG_USER|LOG_INFO,"inital mysql handle error\n");  
  22.      return FALSE;  
  23.    }  
  24.    if(mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL) /*連接數(shù)據(jù)庫(kù)*/  
  25.    {  
  26.      syslog(LOG_USER|LOG_INFO, "Failed to connect to database: Error: %s\n",mysql_error(&mysql));  
  27.      return FALSE;  
  28.    }  
  29.    
  30.     msg.replace("'"," ");        //去掉單引號(hào)  
  31.     sql=QString("insert into socRec(socketID,message) values(%1,'%2')")  
  32.                                     .arg(csID)  
  33.                                  .arg(msg); /*構(gòu)造SQL語(yǔ)句*/  
  34.     qWarning(sql);  
  35.    if(mysql_query(&mysql,sql) != 0) /*執(zhí)行SQL語(yǔ)句,進(jìn)行檢索數(shù)據(jù)*/  
  36.    { /*執(zhí)行SQL語(yǔ)句出錯(cuò)*/  
  37.      syslog(LOG_USER|LOG_INFO, "select ps_info Error: %s\n",mysql_error(&mysql));  
  38.      qWarning("false");  
  39.    }  
  40.    else  
  41.    {  
  42.      qWarning("true");  
  43.    }  
  44.  } 

 【編輯推薦】

Qt數(shù)據(jù)庫(kù)之添加MySQL驅(qū)動(dòng)插件

使用TOMCAT連接池連接MySQL

C++連接mysql數(shù)據(jù)庫(kù)的兩種方法

如何安全的遠(yuǎn)程使用MySQL GUI工具

解析Visual Studio 2005中QT配置使用

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-06-11 14:46:13

MySQL數(shù)據(jù)庫(kù)

2011-07-05 09:35:52

Ubuntu Qt Mysql

2010-06-04 18:12:17

MySQL 數(shù)據(jù)庫(kù)啟動(dòng)

2010-10-26 15:00:36

oracle遠(yuǎn)程連接數(shù)

2011-07-05 10:03:00

Qt MYSQL 數(shù)據(jù)庫(kù)

2011-07-05 10:16:16

Qt 數(shù)據(jù)庫(kù) SQLite

2011-08-30 13:59:06

QTMysql數(shù)據(jù)庫(kù)

2010-06-04 17:49:46

連接MySQL數(shù)據(jù)庫(kù)

2019-12-17 08:39:21

Linuxwindowsoracle

2010-06-10 14:49:56

MySQL鏡像數(shù)據(jù)庫(kù)

2011-06-21 15:11:04

QT 數(shù)據(jù)庫(kù)

2011-06-21 15:31:04

Qt 數(shù)據(jù)庫(kù) SQL

2011-04-07 15:02:02

LinuxMySQL數(shù)據(jù)庫(kù)

2023-09-21 09:31:24

MySQL數(shù)據(jù)庫(kù)

2011-07-05 09:54:04

2010-05-13 17:41:58

2010-05-14 09:57:25

MySQL數(shù)據(jù)庫(kù)

2013-05-24 13:24:46

Mysql數(shù)據(jù)庫(kù)自動(dòng)備份

2010-05-14 16:41:58

MySQL鏡像數(shù)據(jù)庫(kù)

2011-07-05 18:11:13

Qt 數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)