JHHK

欢迎来到我的个人网站
行者常至 为者常成

6 数据库

目录

数据库的一些重要概念

SQLite 中有几个重要的概念,它们对于理解和有效使用 SQLite 数据库至关重要:

1、数据库 (Database):
数据库是一个文件,其中包含一个或多个相关表的集合。在 SQLite 中,一个数据库通常对应一个文件,并且所有的表格和数据都存储在这个文件中。

2、表格 (Table):
表格是数据库中的基本组成单位,用于存储数据。每个表格包含零行或多行数据,并且每一行都被组织成一个或多个列。每个列都有一个数据类型,用于指定它可以存储的数据的类型。

3、列 (Column):
表格中的列定义了表格中存储的数据的类型和格式。每个列都有一个名称和一个数据类型,例如整数、文本、实数等。

4、行 (Row):
表格中的每一行都包含了一组数据,这些数据按照表格的列的顺序排列。每一行都被称为一个记录或条目,每个记录包含了一组相关的数据。

5、主键 (Primary Key):
主键是表格中的一列,其值在整个表格中唯一标识每一行数据。主键的值不能重复,并且可以用于快速查找、索引和更新数据。

6、索引 (Index):
索引是一种数据结构,用于快速查找表格中的数据。通过创建索引,可以提高数据库查询的性能,特别是在大型表格中搜索特定数据时。

7、SQL (Structured Query Language):
SQL 是一种用于管理和操作关系型数据库的标准化语言。通过使用 SQL,可以执行各种操作,包括创建表格、插入和更新数据、查询数据以及删除数据等。

8、预处理语句 (Prepared Statement):
预处理语句是一种执行 SQL 查询和命令的方法,它将 SQL 语句预先编译成一个准备好的语句,然后可以多次执行这个语句,只需不断地提供不同的参数值。
lxy:如果不使用预处理语句,在批量执行时,sql语句要编译一次执行一次,使用了预处理语句可以一次编译多次执行,提高了效率。

9、事务 (Transaction):
事务是一组数据库操作,这些操作被视为一个不可分割的单元,要么全部执行成功,要么全部失败回滚。
事务用于确保数据库的一致性和完整性,并提供了一种机制来管理并发访问数据库时的数据一致性。

在默认情况下,SQLite 在每个 SQL 语句完成后都会自动提交事务。这意味着每个 SQL 语句都是一个单独的事务,即使不显式使用 BEGIN TRANSACTION 和 COMMIT TRANSACTION 也是如此。这种模式称为自动提交模式。

我们可以使用手动模式,来将一组数据库操作,放在一个事务中,来提高执行效率。

通过将事务和预处理语句结合起来使用,我们可以提高数据库操作的效率和安全性。预处理语句减少了解析和编译 SQL 语句的开销,而事务则确保了一组操作的一致性和完整性。

鸿蒙数据库

RdbStore:
提供管理关系数据库(RDB)方法的接口。

 try {
      let ctt:Context = GlobalContext.getContext().getValue(GlobalContext.KEY_CTX) as Context;
      dataRdb.getRdbStore(ctt, {
        name: 'dbName',
        securityLevel: dataRdb.SecurityLevel.S1,
        encrypt: false,
      }, (err, rdbStore) => {
        if (err) {
          console.error('lxy:err==' + err)
        } else {
          // rdbStore提供管理关系数据库(RDB)方法的接口。
          rdbStore.querySql(`SELECT * FROM depts_users WHERE parentId="${id}" LIMIT 1`,
            (err, resultSet) => {
              while (resultSet.goToNextRow()) {
                result = DFAddressBookModelHandler.transitionModel(resultSet)
              }
              // 释放数据集的内存
              resultSet.close();
              if(callBack){callBack(result)};
            })
        }
      })
    } catch(error){
    
    }
rdbStore.querySql():执行sql语句后有返回结果时使用,比如查询   

rdbStore.executeSql():执行sql语句后没有返回结果时使用,比如建表,删除等     

RdbPredicates:
数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。

ResultSet:
提供用户调用关系型数据库查询接口之后返回的结果集合。

    let sqlStr = 'select count(*)from search_history_address_book'
    rdbStore.querySql(sqlStr,(error, resultSet) =>{
      if (resultSet.goToNextRow()) {
        // resultSet 是一个包含了多行和多列的结果集合,
        // 行通过goToNextRow一行一行的读
        // 列可以通过索引号和列的名称来读
        
        // 这个sqlStr执行后只会产生一个一行一列的结果集,所以通过下面的方法获取结果集第一列的值,就是最终需要的结果
        // getLong(columnIndex: number): number;
        let count = resultSet.getLong(0);
      }
    })

行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.