Qt学习笔记之数据库结构设计1

电子说

1.2w人已加入

描述

一、数据库

1、数据库概述

2、数据库操作语句

二、Qt SQL简介

1、 Qt SQL对数据库支持

2、SQLite数据库初识

3、 Qt SQL模块数据库类接口

**一、数据库

**

1、概述

数据库也是应用程序的重要部分,一个完整的应用程序几乎都包含数据库。

当前主流的数据库有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle。

Sqlite是一款轻型的数据库,它的设计目标是嵌入式,方便我们使用。

2、数据库操作语句

语句:

SELECT * FROM menu WHERE id>20

INSERT INTO menu VALUES(102, HELLO)

DELETE FROM menu WHERE name="wj"

UPDATE menu SET name="weijie"

二、Qt SQL简介

1、Qt SQL对数据库支持

在Qt中,Qt为SQL数据库提供支持的基本模块。Qt SQL的API分为不同的层:

·驱动层

·SQL API层

·用户接口层

(1)驱动层

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

(2)SQL API层

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

(3)用户接口层

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

2、SQLite数据库初识

对于数据库操作流程主要分为:

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

QT += core gui sql

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

QStringList drivers = QSqlDatabase::drivers();//获取到qt中所支持的数据库驱动类型


foreach(QString driver,drivers)
{
    qDebug() << driver;
}

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

db = QSqlDatabase::addDatabase("QSQLITE");  //QSQLITE----他来告诉系统,连接的数据库是sqlite3数据库
                                                //连接成功,返回一个数据库对象(QSqlDatabase)
    db.setDatabaseName("test.db");    //设置数据库名,数据库文件后缀为.db
    db.setUserName("admin");          //设置数据库用户名
    db.setPassword("admin");          //设置数据库密码
    //如果想要进一步操作数据库,那么就必须进行数据库打开操作
    if (!db.open())
    {
        qDebug()<<"Error failed to open" <<db.lastError();
        return false;
    }
    else
    {
        qDebug() << "open success";
    }

第四步:访问数据库

访问数据库的操作主要包括:

(1)创建表;

(2)向数据库表中插入数据;

(3)删除数据;

(4)更新数据;

(5)查询数据。

对于数据库中的表,通常只需要创建一次,而其他的操作是可以重复。

(1)创建表

QSqlQuery query;//在创建该对象时,系统会自动完成跟数据库的关联
//定义一个创建表的sql语句    表名:staff    表中的字段:id    name    age
QString sqlCreate = "create table staff(id integer primary key autoincrement,"
                        "name varchar(20),"
                        "age int);";
query.exec(sqlCreate);

使用图形化工具查看的程序结果:

嵌入式

(2)向数据库表中插入数据

插入操作语法:

INSERT INTO TABLE_NAME(column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN)

INSERT INTO ------关键字

TABLE_NAME ------表名

VALUES -------关键字

插入数据操作实例:

//插入操作
QString sqlInset = QString("insert into staff(name,age) values('张三',20);");
if(!query.exec(sqlInset))
{
    qDebug() << "insert data error" << db.lastError();
}

(3)删除数据

数据库删除操作:

基本语法:

DELETE FROM table_name WHERE [condition]

DELETE FROM ---- 关键字

table_name ---- 表名

WHERE ---- 条件的关键字

[condition] ---- 条件表达式

删除数据操作实例

//删除操作
QString sqlDelete = QString("DELETE FROM staff where id = 2;");
if(!query.exec(sqlDelete))
{
    qDebug() << "delete data error" << db.lastError();
}

(4)更新数据

数据库更新操作:

基本语法:

UPDATE table_name SET column1 = value1, column2 = value2,...,column = valueN WHERE [condition];

UPDATE ---- 关键字

Table_name ----表名

SET -----关键字

column1 = value1 ------- 要修改的字段名和所对应的值

WHERE ----- 条件的关键字

[condition] --- 条件表达式

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分