精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony關系型數據庫查詢結果呈現

ITMING ? 來源:ITMING ? 作者: ITMING ? 2023-03-28 18:06 ? 次閱讀

1 ResultSet(結果集)

ResultSet(結果集)是OpenHarmony關系型數據庫提供查詢數據表返回結果的方法,提供了多種靈活的數據訪問方式,以便于開發者獲取各項數據,ResultSet屬性如表1-1所示,ResultSet方法如表1-2所示。

表1-1 ResultSet屬性

名稱 類型 必填 說明
columnNames Array 結果集中所有列的名稱
columnCount number 結果集中的列數
rowCount number 結果集中的行數
rowIndex number 結果集當前行的索引
isAtFirstRow boolean 結果集是否位于第一行
isAtLastRow boolean 結果集是否位于最后一行
isEnded boolean 結果集是否位于最后一行之后
isStarted boolean 指針是否移動過
isClosed boolean 當前結果集是否關閉

表1-2 ResultSet方法

名稱 描述
getColumnIndex(columnName: string): number 根據指定的列名獲取列索引columnName: 結果集中指定列的名稱 number: 返回指定列的索引
getColumnName(columnIndex: number): string 根據指定的列索引獲取列名columnIndex: 結果集中指定列的索引string: 返回指定列的名稱
goTo(offset: number): boolean 向前或向后轉至結果集的指定行,相對于當前行位置偏移offset: 表示相對于當前行位置偏移量boolean:操作成功,則為true,否則為false
goToRow(position: number): boolean 轉到結果集的指定行position: 表示要移動到的指定位置boolean: 操作成功,則為true,否則為false
goToFirstRow(): boolean 轉到結果集的第一行boolean: 操作成功,則為true,否則為false
goToLastRow(): boolean 轉到結果集的最后一行boolean: 操作成功,則為true,否則為false
goToNextRow(): boolean 轉到結果集的下一行boolean: 操作成功,則為true,否則為false
goToPreviousRow(): boolean 轉到結果集上一行boolean: 操作成功,則為true,否則為false
getBlob(columnIndex: number): Uint8Array 以字節數組的形式獲取當前行中指定列的值指定的列索引,從0開始Uint8Array: 以字節數組的形式返回指定列的值
getString(columnIndex: number): string 以字符串形式獲取當前行中指定列的值columnIndex: 指定的列索引,從0開始string: 以字符串形式返回指定列的值
getLong(columnIndex: number): number 以Long形式獲取當前行中指定列的值columnIndex: 指定的列索引,從0開始number: 以Long形式返回指定列的值。該接口支持的數據范圍是:Number.MIN_SAFE_INTEGER~Number.MAX_SAFE_INTEGER,若超出該范圍,則建議使用getDouble
getDouble(columnIndex: number): number 以double形式獲取當前行中指定列的值columnIndex: 指定的列索引,從0開始number: 以double形式返回指定列的值
isColumnNull(columnIndex: number): boolean 檢查當前行中指定列的值是否為nullcolumnIndex: 指定的列索引,從0開始boolean: 當前行中指定列的值為null,則返回true,否則為false
close(): void 關閉結果集

2 流程

3 步驟

3.1 獲取ResultSet結果集

通過RdbStore實例的query()querySql()方法獲得ResultSet結果集。

let predicates = new relationalStore.RdbPredicates(this.tableName);
let result = await this.rdbStore.query(predicates, columns);

3.2 自定義返回結果類

自定義TableResultSet類用于前臺展示。

export class TableResultSet {
    private total: number;                 // 總條數
    private data: any;                     // 數據表數據

    setTotal(total: number) {
        this.total = total;
    }

    setData(data: any) {
        this.data = data;
    }
}

3.3 結果集轉返回結果

ResultSet并不能直接用來展示,通過ResultSet提供的各類方法獲取需要的信息

private resultToObject(result: relationalStore.ResultSet) {
    let trs = new TableResultSet();
    trs.setData(result.rowCount);
    let data: Array<any> = [];
    let count = result.rowCount;
    if (count === 0 || typeof count === 'string') {
      trs.setData([]);
    } else {
      // 從數據第一行開始讀取
      result.goToFirstRow();
      for (let j = 0; j < count; j++) {
        let temp: any = {};
        for (let i = 0; i < this.fields.length; i++) {
          let field = this.fields[i];
          if (field.type === 'INTEGER' || field.type === 'integer') {
            temp[field.name] = result.getLong(result.getColumnIndex(field.name));
          } else if (field.type === 'REAL' || field.type === 'real') {
            temp[field.name] = result.getDouble(result.getColumnIndex(field.name));
          } else if (field.type === 'TEXT' || field.type === 'text') {
            temp[field.name] = result.getString(result.getColumnIndex(field.name));
          } else if (field.type === 'BLOB' || field.type === 'blob') {
            temp[field.name] = result.getBlob(result.getColumnIndex(field.name));
          }
        }
        data.push(temp);
        result.goToNextRow();
      }
      trs.setData(data);
    }
    return trs;
  }

4 呈現結果

  • 使用斷點調試方式

  • 使用日志調試方式
Log.info(TAG, `Query of ${this.tableName} table data succeeded. data: ` + JSON.stringify(result));

  • 頁面顯示
// 顯示表名稱
Text(TableConstants.T_ACCOUNT_NAME)
  .fontSize(18)
  .fontWeight(700)
  .width('90%').height(54)
Column({space: 5}) {
  if (this.result !== null) {
    // 顯示表字段
    GridRow({
      columns: TableConstants.T_ACCOUNT_FIELDS.length,
      direction: GridRowDirection.Row
    }) {
      ForEach(this.result.fields, (field) => {
        GridCol() {
          Text(field)
            .width("100%").height(54)
            .fontSize(16)
            .textAlign(TextAlign.Center)
        }
        .colStyle()
      })
    }
    .width('90%').height(54)
    .backgroundColor(0xE5E5E5)
    // 顯示表數據
    ForEach(this.result.data, (item) => {
      GridRow({
        columns: TableConstants.T_ACCOUNT_FIELDS.length,
        direction: GridRowDirection.Row
      }) {
        ForEach(TableConstants.T_ACCOUNT_FIELDS, (field) => {
          GridCol() {
            this.Label(item[field.name].toString())
          }
          .colStyle()
        })
      }
      .width('90%').height(54)
      .backgroundColor(0xF5F5F5)
    }, temp => temp.toString())
  }
}
.width('100%')

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3767

    瀏覽量

    64279
  • 關系型數據庫

    關注

    0

    文章

    7

    瀏覽量

    2330
  • OpenHarmony
    +關注

    關注

    25

    文章

    3665

    瀏覽量

    16161
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發案例:【搭建關系數據庫】(4)

    本節將介紹如何調用關系數據庫接口在本地搭建數據庫,并讀寫相應的用戶數據。
    的頭像 發表于 05-11 10:27 ?758次閱讀
    HarmonyOS開發案例:【搭建<b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>】(4)

    關系數據庫與非關系數據庫的區別淺析

    關系數據庫的一個劣勢就是 阻抗失諧(impedance mismatch):關系模型和內存中的數據結構之間存在差異
    發表于 06-03 06:03

    HarmonyOS關系數據庫和對象關系數據庫的使用方法

    容易就上手的知識。本篇速成教程直接使用最精準和簡短的文字,再配上講解代碼,讓我們能在10分鐘左右就能掌握最基本的數據庫使用方法。數據庫的三大要素:數據庫、表、字段,接下來為大家介紹關系
    發表于 03-29 14:10

    基于數據庫查詢過程優化設計

    在大型關系數據庫管理與開發中,優化設計極大地提高數據庫的性能。通過對一大數據庫查詢語句執行過程的討論,提出了對同一表格進行多個選擇運算的優
    發表于 02-27 16:05 ?18次下載

    數據查詢

    查詢一、實驗目的通過基于關系網絡數據庫管理系統SQL Server的上機實驗,使學生進一步了解關系
    發表于 05-10 10:55 ?0次下載

    查詢數據庫的最完美技巧

    查詢數據庫的最完美技巧.rar
    發表于 03-15 14:15 ?24次下載

    什么是關系數據庫

    什么是關系數據庫 關系數據庫簡介   關系
    發表于 06-17 07:38 ?9120次閱讀

    什么是非關系數據庫

    什么是非關系數據庫 談到非關系數據庫設計的難點,朱海峰說:“我們可以從一些場景來看這個問題
    發表于 06-17 15:49 ?3128次閱讀

    hbase和關系數據庫的區別

    hbase和關系數據庫的區別就是對于傳統數據庫,增加列對于一個項目來講,改變是非常大的。但是對于nosql,插入列和刪除列,跟傳統數據庫
    發表于 12-27 15:51 ?1.1w次閱讀
    hbase和<b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>的區別

    數據庫系統概論之如何進行關系查詢處理和查詢優化

    本文檔的主要內容詳細介紹的是數據庫系統概論之如何進行關系查詢處理和查詢優化主要內容包括了:1、關系數據庫系統的
    發表于 11-15 15:12 ?11次下載
    <b class='flag-5'>數據庫</b>系統概論之如何進行<b class='flag-5'>關系</b><b class='flag-5'>查詢</b>處理和<b class='flag-5'>查詢</b>優化

    數據庫原理的關系代數詳細講解

    關系代數與關系數據庫操作   關系代數是關系數據庫系統查詢語言的理論基礎。
    發表于 10-31 11:53 ?5次下載

    OpenHarmony關系數據庫概述

    關系數據庫(Relational Database, 以下簡稱RDB)是一種基于關系模型來管理數據
    的頭像 發表于 03-28 18:08 ?1014次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>概述

    關系數據庫的基本原理(什么是關系數據庫

    組成。關系數據庫是基于實用和可重復使用的概念,是支持高性能交互查詢、交易處理能力、安全性和靈活性的關鍵數據存儲和維護方法。關系
    的頭像 發表于 07-10 09:06 ?1377次閱讀

    python讀取數據庫數據 python查詢數據庫 python數據庫連接

    python讀取數據庫數據 python查詢數據庫 python數據庫連接 Python是一門高級編程語言,廣泛應用于各種領域。其中,Pyt
    的頭像 發表于 08-28 17:09 ?1760次閱讀

    常見的存儲Idea數據庫的地方

    。它們使用表格和行的結構來組織數據,并使用SQL語言來查詢和管理數據。一些著名的關系數據庫包括
    的頭像 發表于 12-06 14:15 ?921次閱讀