# @ohos.data.graphStore (图数据库)(系统接口) 图数据库(Graph Database,GDB)是以顶点([Vertex](#vertex))、边([Edge](#edge))为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。图数据库提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的读(查询)、写(增删改)、事务管理等接口,可以直接运行用户输入的GQL(Graph Query Language,图查询语言)语句来满足存储、查询、分析高度互联数据的场景需要。 - [Vertex](#vertex):顶点,代表实体或实例,例如人员、企业、帐户或要跟踪的任何其他项目。它们大致相当于关系数据库中的记录、关系或行,或者文档存储数据库中的文档。 - [Edge](#edge):边,也称作关系,将节点连接到其他节点的线;代表节点之间的关系。边是图数据库中的关键概念,图数据库独有的数据抽象概念,而关系型数据库和文件型数据库并没有“边”这一概念,它们的关系查询必须在运行时进行具体化。 - [Path](#path):路径,由顶点和边按照一定顺序组成的序列。 - [PathSegment](#pathsegment):路径段,路径中的某一条边及其起点、终点。 该模块提供以下图数据库相关的常用功能: - [GraphStore](#graphstore):提供管理图数据库(GDB)方法的接口。 - [Result](#result):提供用户调用图数据库读、写接口之后返回的结果。 - [Transaction](#transaction):提供管理事务对象的接口。 > **说明:** > > - 本模块首批接口从API version 18开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 当前页面仅包含本模块的系统接口。 ## 导入模块 ```ts import { graphStore } from '@kit.ArkData'; ``` ## graphStore.getStore getStore(context: Context, config: StoreConfig): Promise<GraphStore> 获得一个相关的GraphStore实例,操作图数据库,用户可以根据自己的需求配置GraphStore实例的参数,然后通过GraphStore实例调用相关接口可以执行相关的数据操作,使用promise异步回调。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------------------------------- | ---- | ------------------------------------------------------------ | | context | Context | 是 | 应用的上下文,推荐使用Stage模型。
FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。
Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | | config | [StoreConfig](#storeconfig) | 是 | 与此GDB存储相关的数据库配置。 | **返回值**: | 类型 | 说明 | | ----------------------------------------- | --------------------------------- | | Promise<[GraphStore](#graphstore)> | Promise对象。返回GraphStore对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300014 | Invalid database path. | | 31300015 | Config changed. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; let store: graphStore.GraphStore | null = null; class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { const STORE_CONFIG: graphStore.StoreConfig = { name: "testGraphDb", securityLevel: graphStore.SecurityLevel.S2 }; graphStore.getStore(this.context, STORE_CONFIG).then(async (gdb: graphStore.GraphStore) => { store = gdb; console.info('Get GraphStore successfully.') }).catch((err: BusinessError) => { console.error(`Get GraphStore failed, code is ${err.code}, message is ${err.message}`); }) } } ``` ## graphStore.deleteStore deleteStore(context: Context, config: StoreConfig): Promise<void> 使用指定的数据库文件配置删除数据库,使用Promise异步回调。 删除前,如果数据库未关闭,建议使用[close](#close)接口关闭数据后再进行删除。删除成功后,打开的数据库句柄已无效,建议将数据库对象置为null,不再使用。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **参数** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | ------------------------------------------------------------ | | context | Context | 是 | 应用的上下文,推荐使用Stage模型。
FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。
Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | | config | [StoreConfig](#storeconfig) | 是 | 与此GDB存储相关的数据库配置。
**使用约束:**
删除数据库时仅以config.name为标识,不关注其他配置项。 | **返回值**: | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 31300000 | Inner error. | | 31300014 | Invalid database path. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; let store: graphStore.GraphStore | null = null; const STORE_CONFIG: graphStore.StoreConfig = { name: "testGraphDb", securityLevel: graphStore.SecurityLevel.S2 }; class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage){ graphStore.deleteStore(this.context, STORE_CONFIG).then(()=>{ store = null; console.info('Delete GraphStore successfully.'); }).catch((err: BusinessError) => { console.error(`Delete GraphStore failed, code is ${err.code},message is ${err.message}`); }) } } ``` ## StoreConfig 管理图数据库配置。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 名称 | 类型 | 必填 | 说明 | | ------------- | ------------- | ---- | --------------------------------------------------------- | | name | string | 是 | 数据库文件名,也是数据库唯一标识符。
**使用约束:**
1. 文件名长度上限为128字节。
2. 文件名不包含.db后缀。 | | securityLevel | [SecurityLevel](#securitylevel) | 是 | 设置数据库安全级别。
**使用约束:**
1. 安全级别不支持从高到低变更。
2. 同一个数据库如果需要变更安全等级,需要使用[close](#close)接口关闭已经打开的数据库,再将修改安全等级后的StoreConfig作为参数重新调用[getStore](#graphstoregetstore)。 | | encrypt | boolean | 否 | 指定数据库是否加密,默认不加密。
true:加密。
false:非加密。
**使用约束:**
1. 不支持从加密数据库到非加密数据库的变更。
2. 同一个数据库如果需要从非加密数据库变更为加密数据库,需要使用[close](#close)接口关闭已经打开的数据库,再将修改加密标志后的StoreConfig作为参数重新调用[getStore](#graphstoregetstore)。 | ## SecurityLevel 数据库的安全级别枚举。请使用枚举名称而非枚举值。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 名称 | 值 | 说明 | | ---- | ---- | ------------------------------------------------------------ | | S1 | 1 | 表示数据库的安全级别为低级别,当数据泄露时会产生较低影响。例如,包含壁纸等系统数据的数据库。 | | S2 | 2 | 表示数据库的安全级别为中级别,当数据泄露时会产生较大影响。例如,包含录音、视频等用户生成数据或通话记录等信息的数据库。 | | S3 | 3 | 表示数据库的安全级别为高级别,当数据泄露时会产生重大影响。例如,包含用户运动、健康、位置等信息的数据库。 | | S4 | 4 | 表示数据库的安全级别为关键级别,当数据泄露时会产生严重影响。例如,包含认证凭据、财务数据等信息的数据库。 | ## ValueType type ValueType = null | number | string 用于表示允许的数据字段类型,接口参数具体类型根据其功能而定。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 类型 | 说明 | | ------- | -------------------- | | null | 表示值类型为空。 | | number | 表示值类型为数字,可取任意值。 | | string | 表示值类型为字符,可取任意值。 | ## Vertex 记录顶点的相关信息。Vertex仅作为返回值([Result](#result))中的类型出现,不支持自定义填写,可通过使用[read](#read)接口查询获得。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 名称 | 类型 | 必填 | 说明 | | ----------- | --------------------------- | --- | ------------ | | vid | string | 是 | 顶点的标识符。不支持自定义填写,使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口插入顶点后由底层分配的全局唯一标识符。 | | labels | Array<string> | 是 | 顶点的标签。在使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口创建图使用的GQL语句中指定,每个元素长度上限为128字节,不区分大小写,以大写形式存储。 | | properties | Record<string, [ValueType](#valuetype)> | 是 | 顶点的属性。key长度上限为128字节,数量上限为1024条,在使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口创建图使用的GQL语句中指定,value类型为string时长度上限为64 * 1024字节。 | ## Edge 记录边的相关信息。Edge仅作为返回值([Result](#result))中的类型出现,不支持自定义填写,可通过使用[read](#read)接口查询获得。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 名称 | 类型 | 必填 | 说明 | | ----------- | --------------------------- | --- | ------------ | | eid | string | 是 | 边的标识符。不支持自定义填写,使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口插入边后由底层分配的全局唯一标识符。 | | type | string | 是 | 边的类型。在使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口创建图使用的GQL语句中指定,长度上限为128字节,不区分大小写,以大写形式存储。 | | startVid | string | 是 | 起始顶点的标识符。不支持自定义填写,使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口插入顶点后由底层分配的全局唯一标识符。 | | endVid | string | 是 | 终点的标识符。不支持自定义填写,使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口插入顶点后由底层分配的全局唯一标识符。 | | properties | Record<string, [ValueType](#valuetype)> | 是 | 边的属性。key长度上限为128字节,数量上限为1024条,在使用[GraphStore.write](#write-1)或[Transaction.write](#write)接口创建图使用的GQL语句中指定,value类型为string时长度上限为64 * 1024字节。 | ## PathSegment 记录路径段(路径中的每条边及其起点、终点)的相关信息。PathSegment仅作为([Path.segments](#path))的类型出现,不支持自定义填写。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 名称 | 类型 | 必填 | 说明 | | ----------- | --------------------------- | --- | ------------ | | start | [Vertex](#vertex) | 是 | 路径段的起始顶点。 | | end | [Vertex](#vertex) | 是 | 路径段的终点。 | | edge | [Edge](#edge) | 是 | 路径段的边。 | ## Path 记录路径的相关信息。Path仅作为返回值([Result](#result))中的类型出现,不支持自定义填写,可通过使用[read](#read)接口查询获得。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 名称 | 类型 | 必填 | 说明 | | ----------- | --------------------------- | --- | ------------ | | start | [Vertex](#vertex) | 是 | 路径的起始顶点。 | | end | [Vertex](#vertex) | 是 | 路径的终点。 | | length | number | 是 | 路径的长度,即路径中路径段的数量(segments.length),上限为1024条。 | | segments | Array<[PathSegment](#pathsegment)> | 是 | 路径中所有路径段。 | ## Result GQL语句执行结果。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core | 名称 | 类型 | 必填 | 说明 | | ----------- | --------------------------- | --- | ------------ | | records | Array<Record<string, Object>> | 否 | GQL语句执行结果的数据记录。默认值为空。
如果有执行结果,Object具体类型根据查询GQL语句不同,可能是[Vertex](#vertex),[Edge](#edge),[Path](#path)或[ValueType](#valuetype)。 | ## Transaction 提供用于管理图数据库的事务处理方法的接口。 不同事务对象之间的操作是隔离的,当前图数据库使用库级锁。所以如果存在一个事务使用[write](#write)接口写入后未使用[commit](#commit)接口提交或使用[rollback](#rollback)接口回滚,此时其他Transaction实例使用[read](#read)/[write](#write)或GraphStore实例使用[GraphStore.read](#read-1)/[GraphStore.write](#write-1)进行读写操作时会返回31300003错误码。另外如果存在一个事务使用[read](#read)接口查询后未使用[commit](#commit)接口提交或使用[rollback](#rollback)接口回滚,此时其他Transaction实例使用[write](#write)或GraphStore实例使用[GraphStore.write](#write-1)进行写操作时也会返回31300003错误码。 下列API示例中都需先使用[createTransaction](#createtransaction)接口获取到Transaction实例,再通过此实例调用对应方法。 ### read read(gql: string): Promise<Result> 执行数据查询语句。查询范围包括使用[GraphStore.write](#write-1)接口写入的数据、其他事务中使用[write](#write)接口写入并使用[commit](#commit)接口提交的数据以及当前事务中使用[write](#write)接口写入的数据。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ----------------------------- | ---- | -------------------------- | | gql | string | 是 | 要执行的GQL语句。长度上限为1024 * 1024字节。 | **返回值**: | 类型 | 说明 | | --------------------- | ------------------------------------------------- | | Promise<[Result](#result)> | Promise对象。如果操作成功,返回GQL语句执行结果。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300002 | Already closed. | | 31300003 | The database is busy. | | 31300004 | The database is out of memory. | | 31300005 | The database is full. | | 31300006 | A duplicate graph name, vertex or edge type, or vertex or edge property name exists. | | 31300007 | The graph name, vertex or edge type, or vertex or edge property is not defined. | | 31300008 | The graph name, vertex or edge type, or vertex or edge property name does not conform to constraints. | | 31300009 | The GQL statement syntax error. | | 31300010 | The GQL statement semantic error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; const QUERY_PATH_GQL = "MATCH path=(a:Person {name : \'name_1\'})-[]->{2, 2}(b:Person {name : \'name_3\'}) RETURN path;" if(transaction != undefined) { (transaction as graphStore.Transaction).read(QUERY_PATH_GQL).then((result: graphStore.Result) => { console.info('Read successfully'); result.records?.forEach((data) => { for (let item of Object.entries(data)) { const key = item[0]; const value = item[1]; const path = value as graphStore.Path; console.info(`key : ${key}, path.length : ${path.length}`); } }); }).catch((err: BusinessError) => { console.error(`Read failed, code is ${err.code}, message is ${err.message}`); }) } ``` ### write write(gql: string): Promise<Result> 执行数据写入语句。用于增删改数据等。暂不支持修改表结构([Vertex](#vertex)和[Edge](#edge)的类型或属性)、创建/删除图以及创建/删除索引。不支持使用本接口执行事务操作语句,包括开启事务(START TRANSACTION)、提交事务(COMMIT)以及回滚事务(ROLLBACK)。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ----------------------------- | ---- | -------------------------- | | gql | string | 是 | 要执行的GQL语句。长度上限为1024 * 1024字节。 | **返回值**: | 类型 | 说明 | | --------------------- | ------------------------------------------------- | | Promise<[Result](#result)> | Promise对象。如果操作成功,返回GQL语句执行结果。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300002 | Already closed. | | 31300003 | The database is busy. | | 31300004 | The database is out of memory. | | 31300005 | The database is full. | | 31300006 | A duplicate graph name, vertex or edge type, or vertex or edge property name exists. | | 31300007 | The graph name, vertex or edge type, or vertex or edge property is not defined. | | 31300008 | The graph name, vertex or edge type, or vertex or edge property name does not conform to constraints. | | 31300009 | The GQL statement syntax error. | | 31300010 | The GQL statement semantic error. | | 31300012 | The number of graph names, vertex or edge types, or vertex or edge properties exceeds the limit. | | 31300013 | A conflicting constraint already exists. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; const INSERT_GQL = "INSERT (:Person {name: 'name_1', age: 11});" if(transaction != undefined) { (transaction as graphStore.Transaction).write(INSERT_GQL).then(() => { console.info('Write successfully'); }).catch((err: BusinessError) => { console.error(`Write failed, code is ${err.code}, message is ${err.message}`); }) } ``` ### commit commit(): Promise<void> 提交当前事务中已经执行的GQL语句,事务提交后,当前事务不再可用。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **返回值**: | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300002 | Already closed. | | 31300003 | The database is busy. | | 31300004 | The database is out of memory. | | 31300005 | The database is full. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; if(transaction != undefined) { (transaction as graphStore.Transaction).commit().then(() => { console.info(`Commit successfully`); }).catch ((err: BusinessError) => { console.error(`Commit failed, code is ${err.code}, message is ${err.message}`); }) } ``` ### rollback rollback(): Promise<void> 回滚当前事务中已经执行的GQL语句,事务回滚后,当前事务不再可用。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **返回值**: | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300002 | Already closed. | | 31300003 | The database is busy. | | 31300004 | The database is out of memory. | | 31300005 | The database is full. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; if(transaction != undefined) { (transaction as graphStore.Transaction).rollback().then(() => { console.info(`Rollback successfully`); }).catch ((err: BusinessError) => { console.error(`Rollback failed, code is ${err.code}, message is ${err.message}`); }) } ``` ## GraphStore 提供管理图数据库(GDB)方法的接口。 下列API示例中都需先使用[getStore](#graphstoregetstore)接口获取到GraphStore实例,再通过此实例调用对应方法。 ### read read(gql: string): Promise<Result> 执行数据查询语句。查询范围包括使用[write](#write-1)接口写入的数据以及所有事务中使用[Transaction.write](#write)接口写入并使用[Transaction.commit](#commit)接口提交的数据。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ----------------------------- | ---- | -------------------------- | | gql | string | 是 | 要执行的GQL语句。长度上限为1024 * 1024字节。 | **返回值**: | 类型 | 说明 | | --------------------- | ------------------------------------------------- | | Promise<[Result](#result)> | Promise对象。如果操作成功,返回GQL语句执行结果。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300002 | Already closed. | | 31300003 | The database is busy. | | 31300004 | The database is out of memory. | | 31300005 | The database is full. | | 31300006 | A duplicate graph name, vertex or edge type, or vertex or edge property name exists. | | 31300007 | The graph name, vertex or edge type, or vertex or edge property is not defined. | | 31300008 | The graph name, vertex or edge type, or vertex or edge property name does not conform to constraints. | | 31300009 | The GQL statement syntax error. | | 31300010 | The GQL statement semantic error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; const QUERY_PATH_GQL = "MATCH path=(a:Person {name : \'name_1\'})-[]->{2, 2}(b:Person {name : \'name_3\'}) RETURN path;" if(store != null) { (store as graphStore.GraphStore).read(QUERY_PATH_GQL).then((result: graphStore.Result) => { console.info('Read successfully'); result.records?.forEach((data) => { for (let item of Object.entries(data)) { const key = item[0]; const value = item[1]; const path = value as graphStore.Path; console.info(`key : ${key}, path.length : ${path.length}`); } }); }).catch((err: BusinessError) => { console.error(`Read failed, code is ${err.code}, message is ${err.message}`); }) } ``` ### write write(gql: string): Promise<Result> 执行数据写入语句。用于创建图、删除图、增删改数据等。暂不支持修改表结构([Vertex](#vertex)和[Edge](#edge)的类型或属性)。不支持使用本接口执行事务操作语句,包括开启事务(START TRANSACTION)、提交事务(COMMIT)以及回滚事务(ROLLBACK)。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ----------------------------- | ---- | -------------------------- | | gql | string | 是 | 要执行的GQL语句。长度上限为1024 * 1024字节。 | **返回值**: | 类型 | 说明 | | --------------------- | ------------------------------------------------- | | Promise<[Result](#result)> | Promise对象。如果操作成功,返回GQL语句执行结果。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300002 | Already closed. | | 31300003 | The database is busy. | | 31300004 | The database is out of memory. | | 31300005 | The database is full. | | 31300006 | A duplicate graph name, vertex or edge type, or vertex or edge property name exists. | | 31300007 | The graph name, vertex or edge type, or vertex or edge property is not defined. | | 31300008 | The graph name, vertex or edge type, or vertex or edge property name does not conform to constraints. | | 31300009 | The GQL statement syntax error. | | 31300010 | The GQL statement semantic error. | | 31300012 | The number of graph names, vertex or edge types, or vertex or edge properties exceeds the limit. | | 31300013 | A conflicting constraint already exists. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; const CREATE_GRAPH_GQL = "CREATE GRAPH test { (person:Person {name STRING, age INT}),(person)-[:Friend {year INT}]->(person) };" if(store != null) { (store as graphStore.GraphStore).write(CREATE_GRAPH_GQL).then(() => { console.info('Write successfully'); }).catch((err: BusinessError) => { console.error(`Write failed, code is ${err.code}, message is ${err.message}`); }) } ``` ### createTransaction createTransaction(): Promise<Transaction> 创建事务实例。当前图数据库同一时刻至多只能创建4个事务实例。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **返回值**: | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<[Transaction](#transaction)> | 如果操作成功,返回创建的事务实例。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 31300000 | Inner error. | | 31300001 | Database corrupted. | | 31300002 | Already closed. | | 31300003 | The database is busy. | | 31300004 | The database is out of memory. | | 31300005 | The database is full. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let transaction: graphStore.Transaction | undefined = undefined; if(store != undefined) { (store as graphStore.GraphStore).createTransaction().then((trans: graphStore.Transaction) => { transaction = trans; console.info('createTransaction successfully'); }).catch((err: BusinessError) => { console.error(`createTransaction failed, code is ${err.code}, message is ${err.message}`); }) } ``` ### close close(): Promise<void> 关闭图数据库(GDB),未提交的事务将被回滚。 **系统能力:** SystemCapability.DistributedDataManager.DataIntelligence.Core **返回值**: | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[图数据库错误码](errorcode-data-gdb.md)。 | **错误码ID** | **错误信息** | |-----------| ------------------------------------------------------------ | | 202 | Permission verification failed, application which is not a system application uses system API. | | 31300000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; if(store != null) { (store as graphStore.GraphStore).close().then(() => { console.info(`Close successfully`); }).catch ((err: BusinessError) => { console.error(`Close failed, code is ${err.code}, message is ${err.message}`); }) } ```