首页 > 数据库 >关系型数据库

关系型数据库

时间:2024-09-18 11:53:55浏览次数:11  
标签:关系 const 数据库 resultSet predicates NULL id store

关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。不支持Worker线程。

关系型数据库相关的常用功能:

  • RdbStore:提供管理关系数据库(RDB)方法的接口。
  • RdbPredicates:数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
  • ResultSet:提供用户调用关系型数据库查询接口之后返回的结果集合。

 1.创建数据库

CREATE TABLE IF NOT EXISTS interview_audio (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id TEXT NOT NULL,
  name TEXT NOT NULL,
  path TEXT NOT NULL,
  duration INTEGER NOT NULL,
  size INTEGER NOT NULL
)

2.封装一个类

import { relationalStore } from '@kit.ArkData'

class AudioDB {
  store?: relationalStore.RdbStore
  tableName = 'interview_audio'

  // 初始化数据库
  async initStore() {
    const ctx = AppStorage.get<Context>('context')
    if (ctx) {
      const store = await relationalStore.getRdbStore(ctx, {
        name: 'interview_audio.db',
        securityLevel: relationalStore.SecurityLevel.S1
      })
      const sql = `
        CREATE TABLE IF NOT EXISTS ${this.tableName} (
          id INTEGER PRIMARY KEY AUTOINCREMENT,
          user_id TEXT NOT NULL,
          name TEXT NOT NULL,
          path TEXT NOT NULL,
          duration INTEGER NOT NULL,
          size INTEGER NOT NULL
        )
      `
      await store.executeSql(sql)
      this.store = store
    }
  }
}

3.数据操作方法

1)添加

 // 添加
  async insert(item: InterviewAudioItem) {
    const rowId = await this.store?.insert(this.tableName, item)
    if (rowId === undefined || rowId === -1) {
      return Promise.reject('insert fail')
    } else {
      return Promise.resolve()
    }
  }

2)删除

// 删除
  async delete(id: number) {
    const predicates = new relationalStore.RdbPredicates(this.tableName)
    predicates.equalTo('id', id)
    const rowCount = await this.store?.delete(predicates)
    if (rowCount === undefined || rowCount <= 0) {
      return Promise.reject('delete fail')
    } else {
      return Promise.resolve()
    }
  }

3)修改

async update(item: InterviewAudioItem) {
    const predicates = new relationalStore.RdbPredicates(this.tableName)
    predicates.equalTo('id', item.id)
    const rowCount = await this.store?.update(item, predicates)
    if (rowCount === undefined || rowCount <= 0) {
      return Promise.reject('update fail')
    } else {
      return Promise.resolve()
    }
  }

4)查询用户

async query(userId: string) {
    const predicates = new relationalStore.RdbPredicates(this.tableName)
    predicates.equalTo('user_id', userId)
    const resultSet = await this.store?.query(predicates)
    if (!resultSet) {
      return Promise.reject('query fail')
    }
    const list: InterviewAudioItem[] = []
    while (resultSet.goToNextRow()) {
      list.push({
        id: resultSet.getLong(resultSet.getColumnIndex('id')),
        user_id: resultSet.getString(resultSet.getColumnIndex('user_id')),
        name: resultSet.getString(resultSet.getColumnIndex('name')),
        path: resultSet.getString(resultSet.getColumnIndex('path')),
        duration: resultSet.getLong(resultSet.getColumnIndex('duration')),
        size: resultSet.getLong(resultSet.getColumnIndex('size')),
        create_time: resultSet.getLong(resultSet.getColumnIndex('create_time'))
      })
    }
    resultSet.close()
    return Promise.resolve(list)
  }
}

4.导出类

export const audioDB = new AudioDB()

标签:关系,const,数据库,resultSet,predicates,NULL,id,store
From: https://blog.csdn.net/wo_hao_e/article/details/142182451

相关文章

  • 数据库数据恢复—Oracle数据库打开报错“system01.dbf需要更多的恢复来保持一致性,数据
    Oracle数据库故障&检测:打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,无法通过备份去恢复数据库。恢复zxfg用户下的数据。出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据......
  • MySQL与Glibc:了解它们的关系和版本
    最近发现mysql的linux版都有一个glibc后缀,特意查了一下这个glibc与mysql的关系一、解释MySQL是一款流行的开源关系型数据库管理系统,而Glibc则是GNUC库(GNUCLibrary)的简称。Glibc是大多数Linux系统上的标准C库,提供了许多基本的系统调用和函数。MySQL在运行时依赖于Glibc提供的......
  • 基于JAVA客户关系管理系统的计算机毕设源码+论文
    摘要【摘要】随着市场体系的日益完善,我们已经进入了一个买方市场时代。选择空间扩大、购买渠道拓宽、消费心态和购买行为越发成熟,使客户再不会对某一企业或者产品盲目地保持绝对忠诚,如何不断改善客户关系,掌据更多的客户信息,提高客户满意度;如何在日益激烈的市场竞争中把握机会,占有更......
  • Springboot基于BS的校园招聘网站u3o9e(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着高等教育的普及和就业压力的增大,校园招聘成为大学生求职的重要途径。然而,传统招聘方式存在信息不对称、效率低下等问题,给学生和企......
  • Springboot机票订购系统的设计与实现gz7ete程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着全球经济的不断发展和人们生活水平的提高,航空旅行已成为现代社会中不可或缺的出行方式之一。然而,传统的机票订购方式存在信......
  • GBase 8a数据库运维管理系统--GDOM
    GDOM旨在为GBase8aMPP数据库提供全生命周期的运维保障,在为数据库提供可视化监控的同时,通过集群管理、主机管理、健康检查、告警等一系列功能,降低客户运维成本,提高客户运维效率,实时保障集群7*24正常运行。GDOM为复杂的集群操作配备了可视化任务配置页面,用户通过任务配置页可......
  • 数据库日更对IP地址查询来说意味着什么?
    网络安全防护到个性化的在线服务,继而深入到数据分析和市场研究,IP定位数据库所提供信息支持的作用不可忽视。构建IP定位数据库很复杂,需要通过多种渠道收集大量原始数据,包括与互联网服务商合作获取IP地址分配信息,进行网络监测以捕捉动态变化、整合地理信息系统数据确定准确位置等。这......
  • 阿里网盘的跨用户故障和数据库选型
    这两天阿里云网盘出现故障,可以访问其它用户的文件。这在商业上是很可怕的。这个故障是什么原因导致的呢?网上有一些说法。最可信的是SQL查询没写条件,查了所有的文件。试想如果不是关系型数据库,在普通OO编程语言里,断不会发生这样问题,在OO语言里,user.files就是他的文件,不可能......
  • JDBC简介与应用:Java数据库连接的核心概念和技术
    简短介绍JDBC及其重要性。简短介绍JDBCJDBC(JavaDatabaseConnectivity)是一种用于执行SQL语句的JavaAPI并且独立于特定的数据库厂商。它允许开发者以一种标准的方式从Java应用程序中访问关系型数据库,这意味着一旦你掌握了JDBC的基本操作,你可以轻松地将你的应用程......
  • Java和数据库开发规范
    java开发规范第一节:命名风格1.方法名,参数名,成员变量都统一使用lowerCamelCase风格,必须遵从驼峰形式2.类名必须使用upperCamelCase风格,但以下情形例外:DAO/BO/PO/VO/UID3.常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长4.代码中命名均不能以下......