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

    技术2022-05-20  32

    转帖地址: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)