`
yuanyu5237
  • 浏览: 159214 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux下QT连接mysql数据库

    博客分类:
  • QT
阅读更多

之前用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 <QtSql>
#include <QMessageBox>
#include <QTextStream>

QTextStream out(stdout);
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("xxxxxx");
    if(!db.open())
    {
        QMessageBox::critical(0,QObject::tr("Database Error"),db.lastError().text());
        return a.exec();
    }
    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 <<endl;
    }

 

 注意,这段代码,是我加入到工程中的,恩,我就放在main.cpp里;#include <QtSql>这个是必须的;#include <QTextStream>这个是用来进行控制台打印输出的,我的数据库名为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 <QtSql>

To link against the module, add this line to your qmake .pro file:

 QT += sql

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics