Linux下完整的MySQL開發需要安裝服務器端,如果安裝客戶端也沒什麼不好。
環境說明:
ubuntu 10.04.2
QtSDK (1.5G安裝包的那個)
mysql5.1
1.安裝MySQL
Linux下完整的MySQL開發需要安裝服務器端,如果安裝客戶端也沒什麼不好。直接在軟件中心搜mysql,把client和server選上。
server在安裝時會提示爲root用戶設置密碼,設一個好了。
我使用的是mysql5.1版本,用戶名密碼存儲在一個叫mysql的數據庫裏,只有管理員級別才能看到。
如果直接在終端中輸入 mysql,可能會提示ERROR 1045 (28000),這是因爲這時候你是以自己用戶名訪問數據庫,而目前數據庫中只有一個root用戶。沒關係,如果有必要,可以添加一個用戶進去:
mysql -uroot -p -->以root用戶登錄,
grant usage on *.* to dummy@localhost; -->授權名爲dummy的用戶本地登錄,這裏換成自己的用戶名就可以了。
不過這時候直接mysql只有普通的權限,創建數據庫、操作mysql都是不可以的,如果真有將其賦予管理員權限的需要,可以自己查閱有關資料。
2.安裝Qt的MySQL驅動
方法一:直接sudo apt-get install libqt4-sql-mysql ,這是Qt4的mysql驅動,就不用自己費勁編譯了,不過可能會額外下載一些東西。
將 /usr/lib/qt4/plugins/sqldrivers/libqsqlmysql.so拷貝到你的QtSDK sqldrivers目錄下,我當時是直接用普通權限安裝,目錄爲:~/QtSDK/Desktop/Qt/473/gcc/plugins/sqldrivers。
方法二:其實你也可以sudo apt-get download libqt4-sql-mysql,把包解壓縮,然後把裏面的so文件搜出來直接拷貝到那裏。
方法三:乖乖按照官方方法編譯,但是貌似可行性不大,因爲新版本的QtSDK並沒有src目錄,默認也沒有mysql的驅動。
3.做個demo試一下
記得在pro文件中 QT +=那裏加上sql,否則qmake是不會去找sql的相關部分的。
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("study");
db.setUserName("root");
db.setPassword("tyh");
if(!db.open()){
qDebug()<<"Unable to open database";
}else{
qDebug()<<"Database connection established";
}
return a.exec();
}
這裏study這個數據庫之前我已經創建過了,如果連接成功,就會顯示Database connection established。 我是建立的控制檯程序哈。
二:
1.安裝unix/ODBC驅動程序
2.重新編譯qt/src/plugins/sql drivers/mysql,生成一個so文件,放在QT安裝目錄下的plugins/sql drivers文件夾下
3.QT編寫程序,代碼如下
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("192.168.1.15"); db.setDatabaseName("test"); db.setUserName("root"); db.setPassword("linqinong"); bool r = db.open();qDebug() << db.isOpen(); if (r) {ui->label->setText("MY SQL Server Connect OK!"); } else {ui->label->setText("no open"); }------------------------------------------------------爲了確保QMYSQL驅動是否可用可以在main函數裏添加以下代碼int main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; w.setGeometry(0,0,320,240); w.setWindowFlags(Qt::FramelessWindowHint); w.show(); qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t" << driver; //QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //qDebug() << "ODBC driver valid?" << db.isValid(); //db = QSqlDatabase::addDatabase("QODBC"); return a.exec();}三:之前用 C 語言連了mysql數據庫,因爲項目畢竟是用QT包裝的,還需要在qt的界面裏顯示,所以這一次就用QT來連一下mysql。 | |
首先說一下我的電腦是ubuntu10.10;之前安裝了QT的linux全部套件(包括QT creator),也安裝了嵌入式qt的那三個編譯環境(X11,X86,ARM),但是這一次我只用QT creatot裏的qmake編譯(以爲之前編譯完那三個環境後,我就把編譯文件夾全刪了)。 | |
首先,安裝mysql客戶端(mysql-devel),和C語言連接一樣,執行命令: | |
1. sudo apt-get install libmysqlclient-dev | |
2. 或 | |
3. sudo apt-get install libmysqlclient15-dev | |
因爲我之前安裝過,所以這一步就省略了。 | |
然後,連接linux數據庫肯定要有驅動,這個在qt的源碼裏就有:進入文件夾: | |
1. cd QTDIR/src/plugins/sqldrivers/mysql //這就是qt存放mysql驅動源碼的目錄 | |
目錄裏應該有main.cpp 和moc_qsql_mysql.cpp兩個文件 | |
執行命令: | |
1 |
qmake -project //生成mysql.pro文件,可能這一步會說你沒有權限,那麼chmod給它權限就可以了 |
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庫的位置 |
然後,執行命令: | |
1. make | |
2. sudo make install | |
此時,在QTDIR/src/plugins/sqldrivers/mysql 這個目錄下,就生成了一個文件:libqsqlmysql.so;把它拷貝到QTDIR/plugins/sqldrivers, 目錄下面; | |
現在開始編程:隨便建工程:加入如下代碼: |