• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# resultSet (结果集)
2
3结果集是指用户调用关系型数据库查询接口之后返回的结果集合,提供了多种灵活的数据访问方式,以便用户获取各项数据。
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 从API Version 9开始,该接口不再维护,推荐使用新接口[@ohos.data.relationalStore#ResultSet](js-apis-data-relationalStore.md#resultset)。
10
11## ResultSet
12
13提供通过查询数据库生成的数据库结果集的访问方法。
14
15### 使用说明
16
17需要通过[RdbStore.query()](js-apis-data-rdb.md#query)获取resultSet对象。
18
19```js
20import dataRdb from '@ohos.data.rdb';
21let predicates = new dataRdb.RdbPredicates("EMPLOYEE");
22predicates.equalTo("AGE", 18);
23let promise = rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
24promise.then((resultSet) => {
25    console.log(TAG + "resultSet columnNames:" + resultSet.columnNames);
26    console.log(TAG + "resultSet columnCount:" + resultSet.columnCount);
27});
28```
29
30### 属性
31
32**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
33
34| 名称 | 类型 | 必填 | 说明 |
35| -------- | -------- | -------- | -------- |
36| columnNames | Array<string> | 是 | 获取结果集中所有列的名称。 |
37| columnCount | number | 是 | 获取结果集中的列数。 |
38| rowCount | number | 是 | 获取结果集中的行数。 |
39| rowIndex | number | 是 | 获取结果集当前行的索引。 |
40| isAtFirstRow | boolean | 是 | 检查结果集是否位于第一行。 |
41| isAtLastRow | boolean | 是 | 检查结果集是否位于最后一行。 |
42| isEnded | boolean | 是 | 检查结果集是否位于最后一行之后。 |
43| isStarted | boolean | 是 | 检查指针是否移动过。 |
44| isClosed | boolean | 是 | 检查当前结果集是否关闭。 |
45
46### getColumnIndex
47
48getColumnIndex(columnName: string): number
49
50根据指定的列名获取列索引。
51
52**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
53
54**参数:**
55
56  | 参数名 | 类型 | 必填 | 说明 |
57  | -------- | -------- | -------- | -------- |
58  | columnName | string | 是 | 表示结果集中指定列的名称。 |
59
60**返回值:**
61
62  | 类型 | 说明 |
63  | -------- | -------- |
64  | number | 返回指定列的索引。 |
65
66**示例:**
67
68  ```js
69  resultSet.goToFirstRow();
70  const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
71  const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
72  const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
73  const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
74  ```
75
76### getColumnName
77
78getColumnName(columnIndex: number): string
79
80根据指定的列索引获取列名。
81
82**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
83
84**参数:**
85
86  | 参数名 | 类型 | 必填 | 说明 |
87  | -------- | -------- | -------- | -------- |
88  | columnIndex | number | 是 | 表示结果集中指定列的索引。 |
89
90**返回值:**
91
92  | 类型 | 说明 |
93  | -------- | -------- |
94  | string | 返回指定列的名称。 |
95
96**示例:**
97
98  ```js
99  const id = resultSet.getColumnName(0);
100  const name = resultSet.getColumnName(1);
101  const age = resultSet.getColumnName(2);
102  ```
103
104### goTo
105
106goTo(offset:number): boolean
107
108向前或向后转至结果集的指定行,相对于其当前位置偏移。
109
110**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
111
112**参数:**
113
114  | 参数名 | 类型 | 必填 | 说明 |
115  | -------- | -------- | -------- | -------- |
116  | offset | number | 是 | 表示相对于当前位置的偏移量。 |
117
118**返回值:**
119
120  | 类型 | 说明 |
121  | -------- | -------- |
122  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
123
124**示例:**
125
126  ```js
127  let predicatesgoto = new dataRdb.RdbPredicates("EMPLOYEE");
128  let promisequerygoto = rdbStore.query(predicatesgoto, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
129  promisequerygoto.then((resultSet) => {
130      resultSet.goTo(1);
131      resultSet.close();
132  }).catch((err) => {
133      console.log('query failed');
134  });
135  ```
136
137### goToRow
138
139goToRow(position: number): boolean
140
141转到结果集的指定行。
142
143**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
144
145**参数:**
146
147  | 参数名 | 类型 | 必填 | 说明 |
148  | -------- | -------- | -------- | -------- |
149  | position | number | 是 | 表示要移动到的指定位置。 |
150
151**返回值:**
152
153  | 类型 | 说明 |
154  | -------- | -------- |
155  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
156
157**示例:**
158
159  ```js
160  let predicatesgotorow = new dataRdb.RdbPredicates("EMPLOYEE");
161  let promisequerygotorow = rdbStore.query(predicatesgotorow, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
162  promisequerygotorow.then((resultSet) => {
163      resultSet.goToRow(5);
164      resultSet.close();
165  }).catch((err) => {
166      console.log('query failed');
167  });
168  ```
169
170### goToFirstRow
171
172goToFirstRow(): boolean
173
174转到结果集的第一行。
175
176**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
177
178**返回值:**
179
180  | 类型 | 说明 |
181  | -------- | -------- |
182  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
183
184**示例:**
185
186  ```js
187  let predicatesgoFirst = new dataRdb.RdbPredicates("EMPLOYEE");
188  let promisequerygoFirst = rdbStore.query(predicatesgoFirst, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
189  promisequerygoFirst.then((resultSet) => {
190      resultSet.goToFirstRow();
191      resultSet.close();
192  }).catch((err) => {
193      console.log('query failed');
194  });
195  ```
196
197### goToLastRow
198
199goToLastRow(): boolean
200
201转到结果集的最后一行。
202
203**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
204
205**返回值:**
206
207  | 类型 | 说明 |
208  | -------- | -------- |
209  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
210
211**示例:**
212
213  ```js
214  let predicatesgoLast = new dataRdb.RdbPredicates("EMPLOYEE");
215  let promisequerygoLast = rdbStore.query(predicatesgoLast, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
216  promisequerygoLast.then((resultSet) => {
217      resultSet.goToLastRow();
218      resultSet.close();
219  }).catch((err) => {
220      console.log('query failed');
221  });
222  ```
223
224### goToNextRow
225
226goToNextRow(): boolean
227
228转到结果集的下一行。
229
230**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
231
232**返回值:**
233
234  | 类型 | 说明 |
235  | -------- | -------- |
236  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
237
238**示例:**
239
240  ```js
241  let predicatesgoNext = new dataRdb.RdbPredicates("EMPLOYEE");
242  let promisequerygoNext = rdbStore.query(predicatesgoNext, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
243  promisequerygoNext.then((resultSet) => {
244      resultSet.goToNextRow();
245      resultSet.close();
246  }).catch((err) => {
247      console.log('query failed');
248  });
249  ```
250
251### goToPreviousRow
252
253goToPreviousRow(): boolean
254
255转到结果集的上一行。
256
257**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
258
259**返回值:**
260
261  | 类型 | 说明 |
262  | -------- | -------- |
263  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
264
265**示例:**
266
267  ```js
268  let predicatesgoPrev = new dataRdb.RdbPredicates("EMPLOYEE");
269  let promisequerygoPrev = rdbStore.query(predicatesgoPrev, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
270  promisequerygoPrev.then((resultSet) => {
271      resultSet.goToPreviousRow();
272      resultSet.close();
273  }).catch((err) => {
274      console.log('query failed');
275  });
276  ```
277
278### getBlob
279
280getBlob(columnIndex: number): Uint8Array
281
282以字节数组的形式获取当前行中指定列的值。
283
284**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
285
286**参数:**
287
288  | 参数名 | 类型 | 必填 | 说明 |
289  | -------- | -------- | -------- | -------- |
290  | columnIndex | number | 是 | 指定的列索引,从0开始。 |
291
292**返回值:**
293
294  | 类型 | 说明 |
295  | -------- | -------- |
296  | Uint8Array | 以字节数组的形式返回指定列的值。 |
297
298**示例:**
299
300  ```js
301  const codes = resultSet.getBlob(resultSet.getColumnIndex("CODES"));
302  ```
303
304### getString
305
306getString(columnIndex: number): string
307
308以字符串形式获取当前行中指定列的值。
309
310**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
311
312**参数:**
313
314  | 参数名 | 类型 | 必填 | 说明 |
315  | -------- | -------- | -------- | -------- |
316  | columnIndex | number | 是 | 指定的列索引,从0开始。 |
317
318**返回值:**
319
320  | 类型 | 说明 |
321  | -------- | -------- |
322  | string | 以字符串形式返回指定列的值。 |
323
324**示例:**
325
326  ```js
327  const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
328  ```
329
330### getLong
331
332getLong(columnIndex: number): number
333
334以Long形式获取当前行中指定列的值。
335
336**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
337
338**参数:**
339
340  | 参数名 | 类型 | 必填 | 说明 |
341  | -------- | -------- | -------- | -------- |
342  | columnIndex | number | 是 | 指定的列索引,从0开始。 |
343
344**返回值:**
345
346| 类型 | 说明 |
347| -------- | -------- |
348| number | 以Long形式返回指定列的值。<br/>该接口支持的数据范围是:Number.MIN_SAFE_INTEGER ~ Number.MAX_SAFE_INTEGER,若超出该范围,建议使用[getDouble](#getdouble)。 |
349
350**示例:**
351
352  ```js
353  const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
354  ```
355
356### getDouble
357
358getDouble(columnIndex: number): number
359
360以double形式获取当前行中指定列的值。
361
362**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
363
364**参数:**
365
366  | 参数名 | 类型 | 必填 | 说明 |
367  | -------- | -------- | -------- | -------- |
368  | columnIndex | number | 是 | 指定的列索引,从0开始。 |
369
370**返回值:**
371
372  | 类型 | 说明 |
373  | -------- | -------- |
374  | number | 以double形式返回指定列的值。 |
375
376**示例:**
377
378  ```js
379  const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
380  ```
381
382### isColumnNull
383
384isColumnNull(columnIndex: number): boolean
385
386检查当前行中指定列的值是否为null。
387
388**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
389
390**参数:**
391
392  | 参数名 | 类型 | 必填 | 说明 |
393  | -------- | -------- | -------- | -------- |
394  | columnIndex | number | 是 | 指定的列索引,从0开始。 |
395
396**返回值:**
397
398  | 类型 | 说明 |
399  | -------- | -------- |
400  | boolean | 如果当前行中指定列的值为null,则返回true,否则返回false。 |
401
402**示例:**
403
404  ```js
405  const isColumnNull = resultSet.isColumnNull(resultSet.getColumnIndex("CODES"));
406  ```
407
408### close
409
410close(): void
411
412关闭结果集。
413
414**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
415
416**示例:**
417
418  ```js
419  let predicatesClose = new dataRdb.RdbPredicates("EMPLOYEE");
420  let promiseClose = rdbStore.query(predicatesClose, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
421  promiseClose.then((resultSet) => {
422      resultSet.close();
423  }).catch((err) => {
424      console.log('resultset close failed');
425  });
426  ```
427
428