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
- 1.
注意下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);
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
小结:详解Qt数据库的链接与如何使用SQL的内容介绍完了,希望通过本文的学习能对你有所帮助!