您的位置:首页 > 编程语言 > Qt开发

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中

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();
}


总结一下:

在网上找了很多连接的数据库的方法,试了好几种,要么太麻烦,要么就是连接不成功,最后试了这一种成功了,很开心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 qt mysql