Qt链接数据库与使用SQL 小例子

转帖地址:http://blog.csdn.net/microsky2813/archive/2010/03/02/5338040.aspx

 

 

一直没接触数据库,前一阵突然有机会用了用MySQL,顺手把SQL语法学了一遍,学完了手痒痒,一想Qt可以

结合数据库,就顺便试了下Qt链接数据库与使用SQL

SQL部分就不说了

Qt先说链接部分
1.先做数据库驱动,现在Qt SDk for windows里面已经有ODBC的驱动了,我当时现做了个MySQL的驱动(其实我当时是没看见有ODBC),
因为我使用MinGW,所以先使用remip.exe把MySQL/opt里面的 LibMySQL.lib转成.a(使用MSVC的就可以跳过这步了)
然后再进qt/src/plugins/sqldriver/mysql 编译出驱动
QMAKE -o Makefile "INCLUDEPATH+=MYSQL/INCLUDE" "LIBS+=MYSQL/LIB/OPT/libmysql.a" mysql.pro
注意下qmake的参数就行了 再make, 这部分网上说的很详细,

2.Qt使用SQL

主要是下面的几个类
 QSqlDatabase 建立于数据库的链接
 QSqlQuery 用于执行SQL语句
 QSqlTableModel 结合QTableView可以输出数据库的表

贴下我写的简单Demo

 

    QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"/*"QODBC"*/); // becomes the new default connection  

    db.setUserName("root");//用户名  

    db.setPassword("password");//密码  

    db.setHostName("localhost");  

    db.setDatabaseName("test");//数据库名  

    db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1");//使用SSL  

    db.setPort(3306);//端口  

    if(db.open()){  

        qDebug()<<"open/n"<<db.lastError().driverText()<<"/n";  

    }  

    else{  

        qDebug()<<"open faile/n";  

    }  

    QSqlQuery query;//用于执行SQL语言  

     query.exec("show databases");//很方便的  

     while (query.next()) {  

         qDebug()<<query.value(0).toString()<<"/n";  

 

    }  

 

    QSqlTableModel *model = new QSqlTableModel;//间接将数据库表装入QTableView  

    model->setTable("people");   //表名  

    model->setEditStrategy(QSqlTableModel::OnManualSubmit);  

    model->select();  

    //model->removeColumn(0); // don't show the ID  

    //model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));  

    model->setHeaderData(0, Qt::Horizontal, tr("Name"));  

    model->setHeaderData(1, Qt::Horizontal, tr("Age"));  

    model->setHeaderData(2, Qt::Horizontal, tr("Sex"));  

 

 

    QTableView *view = new QTableView(this);  

    view->setModel(model);  

 

    db.close();  

 

    QGridLayout * gl=new QGridLayout();  

    gl->addWidget(view);  

    this->setLayout(gl);  

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值