Qt Creator:连接数据库和初步了解QSqlTableModel
2015-09-13 17:39
501 查看
QT Crator可以连接SQLITE、MYSQL、PLSQL等数据库。
这里介绍的是window下连接MYSQL数据库,如果是Linux下连接数据库只需要下载mysql然后在终端安装就行了。
首先,将mysql安装目录下的lib中的libmysql.dll库复制到QT安装目录下的bin文件夹中。
连接数据的代码块:
在头文件QDatabase中
初步了解QSqlTableModel
建立文件:
MyWidget.h
MyWidget.cpp
main.cpp
总结一下:
在网上找了很多连接的数据库的方法,试了好几种,要么太麻烦,要么就是连接不成功,最后试了这一种成功了,很开心。
这里介绍的是window下连接MYSQL数据库,如果是Linux下连接数据库只需要下载mysql然后在终端安装就行了。
首先,将mysql安装目录下的lib中的libmysql.dll库复制到QT安装目录下的bin文件夹中。
连接数据的代码块:
在头文件QDatabase中
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("XXXXX");//填写自己的数据库密码 db.setDatabaseName("food");//要链接的数据库名 bool bRet = db.open(); if(bRet == false) { qDebug() << "error open database" << db.lastError().text(); exit(0); } qDebug() << "open database success";
初步了解QSqlTableModel
建立文件:
MyWidget.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QSqlDatabase> #include <QDebug> #include <QVector> #include <QSqlError>//可以调用lastError()函数,显示连接数据库出现的错误 #include <QSqlQuery> #include <QSqlTableModel> #include <QSqlRecord> class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = 0); signals: public slots: }; #endif // MYWIDGET_H
MyWidget.cpp
#include "MyWidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("123456"); db.setDatabaseName("food");//要链接的数据库名 bool bRet = db.open(); if(bRet == false) { qDebug() << "error open database" << db.lastError().text(); exit(0); } qDebug() << "open database success"; #if 0 //db.exec("insert into account(aid,aname,apass) values(22,'xiaonaiquan','123')"); QSqlQuery qurry = db.exec("select * from account"); // int size = qurry.size(); bool b = qurry.first(); while(b) { QSqlResult *result = qurry.result(); QVector<QVariant> values = result->boundValues(); qDebug() << values; b = qurry.next(); } #endif//这种方法打印出来数据(已经抛弃不用了) //QSqlTableModel数据表对应的数据结构 QSqlTableModel model; model.setTable("account");//表的名字 model.setFilter("aid=1");//按条件查询,id=2的 model.select();//执行查询语句 int ret = model.rowCount(); //从数据库中读写数据库 for(int i = 0;i < ret;i++) { QSqlRecord record = model.record(i); for(int j = 0;j < record.count();j++) { qDebug() << record.value(j); } } //update database //model.setData(model.index(0,1),"xxxx");//改动0行,第1列的值 //model.submitAll(); //insert dato into database QSqlRecord record1 = model.record(); //record1.setValue("aid","11"); record1.setValue("aname","newuser"); record1.setValue("apass","123"); model.insertRecord(-1,record1);//把数据放到model中,-1行表示放到最后一行 //model.submitAll(); }
main.cpp
#include <QApplication> #include "MyWidget.h" int main(int argc,char **argv) { QApplication app(argc,argv); MyWidget w; w.show(); return app.exec(); }
总结一下:
在网上找了很多连接的数据库的方法,试了好几种,要么太麻烦,要么就是连接不成功,最后试了这一种成功了,很开心。
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法