Qt Creator:连接数据库和初步了解QSqlTableModel

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

总结一下:
在网上找了很多连接的数据库的方法,试了好几种,要么太麻烦,要么就是连接不成功,最后试了这一种成功了,很开心。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值