(1)在PC机上编译此驱动
首先进入qt的安装目录
root@ubuntu: # cd /opt/qtsdk-2010.05/qt/src/plugins/sqldrivers/mysql
打开mysql.pro,添加如下两行:
INCLUDEPATH += /usr/local/mysql/include/mysql
LIBS += -L/usr/local/mysql/lib/mysql –lmysqlclient_r
再用安装的arm板qte目录下的qmake命令生成Makefile
我的arm板qte安装在/opt下,此命令在/opt/QtEmbedded-4.7.2/arm/bin下,即
/opt/QtEmbedded-4.7.2/arm/bin/qamke mysql.pro
make
make install
执行完后,会在当前目录生成libqsqlmysql.so文件,将其移到arm板上/opt/QtEmbedded-4.7.2/arm/plugins/sqldrivers目录中,可以通过如下程序测试可用的数据库驱动:
程序1:
#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(); } |
此程序可以测试出当前开发板可用的数据库驱动。
(2)在开发板上测试数据库的连接
一般建移植好mysql后会有test和mysql两个供用户练习的数据库,所以此处不用再建数据库,不过在程序中必须注意:由于是要下载到开发板上,所以密码必须和开发板上用户密码一致。如果成功,则会显示 “数据库连接成功”
程序2:
#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")); //设置tr()编码。 QSqlQueryModel *model; QTableView *table=new QTableView; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); //数据库服务器 db.setDatabaseName("test"); //数据库名 db.setUserName("root"); //登录名 db.setPassword("123456"); //密码 if(db.open()) { QMessageBox::information(0,QObject::tr("信息"), QObject::tr("数据库连接成功")); 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 { // 数据库打开失败,显示数据库返回的失败信息 QMessageBox::critical(0,QObject::tr("出错"),db.lastError().text()); } Qapplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit())); return app.exec(); } } |
至此,mysql在开发板上的移植与连接基本完成,以后需要什么插件,只需再编译、移植即可。