Qt 連接 MySQL并編譯驅(qū)動
Qt 連接 MySQL并編譯驅(qū)動是本文呢要介紹的內(nèi)容,Qt開發(fā)環(huán)境并可正常使用(假設(shè)用的是VS2008+ QtVisualStudioIntegrationv1.43for.VS.2003.2005)一切操作均在windows下進(jìn)行。
1、安裝MySQL
下載MySQL安裝程序,安裝時(shí)選擇Custom方式,選擇安裝目錄,目錄***不要有空格,不要有中文,選擇安裝include和lib文件。其它的就沒什么了。Sqlyog是一個(gè)MySQL的圖形界面管理工具,可以安裝上,方便數(shù)據(jù)庫操作。
2、將安裝好的MySQL目錄下的include文件夾里的文件(頭文件)復(fù)制到編譯工具的include文件夾下,再將MySQL目錄下的lib\opt里的文件復(fù)制到編譯工具的lib文件夾下,簡而言之就是要讓編譯器能找到MySQL里相應(yīng)的文件。(該路徑也可在生成工程文件時(shí)添加給qmake)比如:
- ..\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=D:\MySQL\include" "LIBS+=D:\MySQL\lib\opt\libmysql.lib"
3、打開VS2008 命令提示符,將目錄切換到Qt\src\plugins\sqldrivers\mysql\,運(yùn)行qmake
完了在運(yùn)行nmake。不出錯(cuò)的話MySQL的驅(qū)動就編好了。用如下代碼進(jìn)行驅(qū)動測試:(這段程序編譯完之后不是運(yùn)行,是調(diào)試,不然測試信息出不來)
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QSqlError>
- #include <QApplication>
- #include <QSqlDatabase>
- #include <QStringList>
- #include <QMessageBox>
- #include <QDebug>
- int main(int argc, char* argv[])
- {
- QApplication app(argc, argv);
- qDebug() << "Available drivers:";
- QStringList drivers = QSqlDatabase::drivers();
- foreach(QString driver, drivers)
- qDebug() << "\t" << driver;
- QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
- qDebug() << "MYSQL driver valid?" << db.isValid();
- }
測試結(jié)果如下圖:
4、MySQL里創(chuàng)建庫,創(chuàng)建庫時(shí)數(shù)據(jù)庫字符集選擇gbk編碼,創(chuàng)建數(shù)據(jù)庫名為test,單表,表名為testTable,表內(nèi)屬性為name varchar ;(方便理解代碼)
5、用如下代碼測試連接數(shù)據(jù)庫并測試寫入、讀出數(shù)據(jù)是否成功,并測試數(shù)據(jù)是否亂碼。
- #include <QtGui>
- #include <QtSql>
- #include <QTableView>
- #include <QString>
- #include <QObject>
- int main(int argc, char **argv)
- {
- QApplication app(argc, argv);
- QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk")); //設(shè)置tr()編碼。
- QSqlQueryModel *model;
- QTableView *table=new QTableView;
- QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
- db.setHostName("localhost"); //數(shù)據(jù)庫服務(wù)器
- db.setDatabaseName("test"); //數(shù)據(jù)庫名
- db.setUserName("root"); //登錄名
- db.setPassword("123456"); //密碼
- if(db.open())
- {
- QMessageBox::information(0,QObject::tr("信息"),
- QObject::tr("數(shù)據(jù)庫連接成功"));
- QSqlQuery query;
- query.exec(QObject::tr("INSERT INTO bbb VALUES ('柯南')"));
- query.exec("SELECT name FROM testTable");//name為屬性名;
- //testTable為表名
- model=new QSqlQueryModel;
- model->setQuery(query);
- model->setHeaderData(0, Qt::Horizontal, QObject::tr("姓名"));
- table->setModel(model);
- table->show();
- }
- else
- {
- // 數(shù)據(jù)庫打開失敗,顯示數(shù)據(jù)庫返回的失敗信息
- QMessageBox::critical(0,QObject::tr("出錯(cuò)"),db.lastError().text());
- }
- QApplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit()));
- return app.exec();
- }
運(yùn)行結(jié)果如下圖:
小結(jié):關(guān)于Qt 連接 MySQL并編譯驅(qū)動的內(nèi)容介紹的完了,希望本文呢對你有所幫助!更多內(nèi)容請參考編輯推薦。