Qt数据库的链接与如何使用SQL是本文要介绍的内容,主要是来学习QT中数据库的链接和SQL如何来使用,具体内容的实现来看本文详解。
一直没接触数据库,前一阵突然有机会用了用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);
小结:详解Qt数据库的链接与如何使用SQL的内容介绍完了,希望通过本文的学习能对你有所帮助!