当前位置: 首页 > news >正文

德阳有哪些做网站的公司上海营销型网站建设平台

德阳有哪些做网站的公司,上海营销型网站建设平台,网站如何做404,失败营销案例100例一.Qt为SQL数据库提供支持的基本模块(Qt SQL) Qt SQL的API分为不同层: 驱动层 SQL API层 用户接口层 1.驱动层 对于Qt 是基于C来实现的框架,该层主要包括QSqlDriver,QSqlDriverCreator,QSqlDriverCreatorBase,QSqlPlug…

一.Qt为SQL数据库提供支持的基本模块(Qt SQL)

   Qt SQL的API分为不同层:

   驱动层

   SQL API层

   用户接口层

1.驱动层

   对于Qt 是基于C++来实现的框架,该层主要包括QSqlDriver,QSqlDriverCreator,QSqlDriverCreatorBase,QSqlPlugin,and QSqlResult.这一层提供了特定数据和SQLAPI层之间的底层桥梁。

2.SQL API层

   对于SQL API层提供了数据库的访问相关类,其中,QSqlDatabase类进行连接,QSlqQuery可以完成于数据库的交互。除此之外,包括了还提供了QSqlError,QSqlField,QSqlIndex,and QSqlRecord类。

3.用户接口层

   用户接口层的几个类实现了将数据库中的数据链连接到窗口部件上,这些类是使用模型/试图框架实现的,它们是更高层次的抽象,主要包括QSqlQueryModel,QSqlTableModel,andQSqlRelationalTableModel.

4.Qt SQL模块对数据库类

在Qt中为SQL数据库提供驱动程序层、SQL API层和用户界面,其提供主要类的简要功能说明见下表:

二.SQLite数据库操作流程

   第一步:在项目管理文件(.pro)中,增加数据库模块:QT    += sql

   第二步:查看Qt对数据库的驱动的类型的支持

   第三步:连接数据库,打开数据库

   第四步:访问数据库,读写操作

   第五步:关闭数据库

三.代码示例

1.查看Qt对数据库的驱动的类型的支持

  1. 代码

#include <QApplication>

#include <QSqlDatabase>

#include <QDebug>

#include <QStringList>

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    qDebug() << "Available drivers:";

    QStringList drivers = QSqlDatabase::drivers();

    foreach(QString driver, drivers)

        qDebug() << driver;

    return a.exec();

}

(2)执行结果

2.Qt读写Sqlite数据库

Qt访问Sqlite数据库的三种方式(即使用三种类库去访问),分别为QSqlQuery、QSqlQueryModel、QSqlTableModel,对于这三种类库,可看为一个比一个上层,也就是封装的更厉害,甚至第三种QSqlTableModel,根本就不需要开发者懂SQL语言,也能操作Sqlite数据库。

下面示例采用QSqlQuery方法实现数据库操作。

(1)widget.h

#ifndef WIDGET_H

#define WIDGET_H

#include <QWidget>

#include <QSqlError>

#include <QSqlQueryModel>

#include <QSqlRelationalTableModel>

#include <QSqlRelationalTableModel>

#include <QTableView>

namespace Ui {

class Widget;

}

class Widget : public QWidget

{

    Q_OBJECT

public:

    explicit Widget(QWidget *parent = nullptr);

    ~Widget();

private:

    Ui::Widget *ui;

    QSqlTableModel *model;

};

#endif // WIDGET_H

(2)widget.cpp

#include "widget.h"

#include "ui_widget.h"

#include <QSqlDatabase>

#include <QDebug>

#include <QSqlQuery>

Widget::Widget(QWidget *parent) :

    QWidget(parent),

    ui(new Ui::Widget)

{

    ui->setupUi(this);

    //1.创建与打开数据库

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

    db.setDatabaseName("dataset.db");

    if(!db.open())

    {

        qDebug() << "创建失败   " << db.lastError();

    }

    else

    {

        qDebug() << "创建成功";

    }

    //2.创建表

    QSqlQuery sql_query;

    QString create = "create table student(id int,name varchar(20),age int)";

    sql_query.prepare(create);

    sql_query.exec();

    //32.插入数据

    QString insert_sql = "insert into student values(?,?,?)" ;

    sql_query.prepare(insert_sql);

    sql_query.addBindValue(1);

    sql_query.addBindValue("Tom");

    sql_query.addBindValue(15);

    if(!sql_query.exec())

    {

        qDebug() << "插入执行错误: " << sql_query.lastError();

    }

    else {

        qDebug() << "插入成功";

    }

    //4.读取数据库表全部内容

    QString select_sql = "select * from student";

    sql_query.prepare(select_sql);

    if(!sql_query.exec())

    {

        qDebug() << "查看执行错误: " << sql_query.lastError();

    }

    else {

        while(sql_query.next())//如果下一行数据还存在,就继续执行

        {

            int id = sql_query.value(0).toInt();//将sql里的int转换为qt里的int

            QString name = sql_query.value(1).toString();//将sql里的string转化为qt里的string

            int age = sql_query.value(2).toInt();

            qDebug() << "id " << id << "  name: " << name << "  age: " << age;

        }

    }

    //5.更新数据内容

    QString update_sql = "update student set name =:nm where id =:n";

    sql_query.prepare(update_sql);

    sql_query.bindValue(":nm","TTTs");

    sql_query.bindValue(":n", "1");

    if(!sql_query.exec())

    {

        qDebug() << "更新失败" << sql_query.lastError();

    }

    else {

        qDebug() << "更新成功";

    }

    //6.再次读取数据内容

    select_sql = "select * from student";

    sql_query.prepare(select_sql);

    if(!sql_query.exec())

    {

        qDebug() << "查看执行错误: " << sql_query.lastError();

    }

    else {

        while(sql_query.next())//如果下一行数据还存在,就继续执行

        {

            int id1 = sql_query.value(0).toInt();//将sql里的int转换为qt里的int

            QString name1 = sql_query.value(1).toString();//将sql里的string转化为qt里的string

            int age1 = sql_query.value(2).toInt();

            qDebug() << "id " << id1 << "  name: " << name1 << "  age: " << age1;

        }

    }

    //7.删除数据内容

    QString delete1_sql = "delete from student where id = 1";

   // QString delete1_sql = "delete from student";

    sql_query.prepare(delete1_sql);

    if(!sql_query.exec())

    {

        qDebug() << "删除失败";

        qDebug() << sql_query.lastError().text();

    }

    else {

        qDebug() << "删除成功";

    }

}

Widget::~Widget()

{

    delete ui;

}

(3)执行结果:

http://www.yayakq.cn/news/289503/

相关文章:

  • 建设网站前景怎么样药监局网站建设方案
  • 自己做的网站怎么放视频教程搜索引擎优化服务公司哪家好
  • 中企动力 35 做网站惠州网站设计方案
  • 淘客手机版网站怎么做上海网站建设_永灿品牌建站
  • apache添加网站网站连通率
  • 网站制作器如何做网盟推广网站
  • 企业网站管理系统c品牌设计公司品牌设计公司排名
  • 模板网站有什么不好网站内链建设和外链的推广
  • 谷城网站定制商城网站建设资讯
  • 石桥铺网站建设阿里巴巴法拍房官网
  • 自己的网站建设wordpress汉化客户端
  • 个人简历模板免费下载网站深圳龙华区是富人区吗
  • wordpress子站如何修改dns 快速使用境外网站
  • 做的页面好看的网站cms网站建设教程
  • 做文献ppt模板下载网站国际交流中心网站建设与管理制度
  • 无极网站站怎么有的下不了眼镜网站源码
  • 网站建设怎么样企业网络营销方法
  • 住房和城乡建设部网站倪虹珠江现代建设 杂志社网站
  • 凯叔讲故事网站谁做的网站外链有什么用
  • 玉环网站制作网站怎么做才 吸引人
  • 顺德品牌网站建设临沂做网站找哪家好
  • 毕节建设网站建站公司最喜欢的网站
  • 怎么用PS做网站广告图网业截屏怎么截
  • 网页制作与网站开发模板广州百度推广代理公司
  • 企业网站设计流程帮别人做网站进了看守所
  • 做网站和做app哪个简单免费虚拟主机免费空间
  • 电子商务网站推广主要方式注册子公司流程及所需资料
  • 企业注册在哪个网站申请wordpress 主题 google字体
  • 数字博物馆网站建设内容一个完整的个人网站
  • 网站后台购买winserver2008上用iis发布网站