HarmonyOS 鸿蒙Next arkTS关系型数据库建表SQL语句怎么写,字段类型怎么对应

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next arkTS关系型数据库建表SQL语句怎么写,字段类型怎么对应 使用arkTS编程,在创建关系型数据库时,对于string数据,以前使用的SQL字段类型是VARCHAR。

现在使用API12开发,看了官方文档,不是很明白,不知道应该使用哪种类型,是TEXT、VARCHAR,还是string(有这个字段类型吗?)。文档截图如下:

cke_3584.png

当前需求,数据库主要用来存放中文字符,长度在65535以下,搜了下,感觉nvarchar范围1-4000,有点短了。向各位请教下,有没有更适合的字段类型。

后来试了使用NVARCHAR(MAX),数据库可以链接成功,但是建表会失败。SQL语句如下:

const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS CESHI (' +
        'ID INTEGER PRIMARY KEY NOT NULL,' +
        ' NAME NVARCHAR(MAX) NOT NULL' +
        ')';

使用的是relationstore.rdbstore.execute()函数。(详情

cke_21598.png

建表失败,是什么原因呢,不能使用NVARCHAR吗?但是NVARCHAR(4000)又可以。

需要注意的地方,如果是通过连字符方式拼接的SQL语句,如下截图,注意不要省略红线处的空格符,省略了,会导致语句关键字NVARCHAR不正确,因为与前面的字符连成一个单词了,不是NVARCHAR了。

cke_18180.png


更多关于HarmonyOS 鸿蒙Next arkTS关系型数据库建表SQL语句怎么写,字段类型怎么对应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

nvarchar范围是1-4000,应该不满足楼主的场景吧,建议可以使用string或者varchar,我这边用string字段建表成功了,demo代码如下,可以参考下:

const STORE_CONFIG :relationalStore.StoreConfig= {
      name: 'RdbTest.db', 
      securityLevel: relationalStore.SecurityLevel.S3,
      encrypt: false, 
      customDir: 'customDir/subCustomDir',
      isReadOnly: false
    };

const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS CESHI1 (' +
      'ID INTEGER PRIMARY KEY NOT NULL,' +
      'NAME NVARCHAR(MAX) NOT NULL' +
      'NEW_NAME string NOT NULL' +
      ')';

relationalStore.getRdbStore(this.context, STORE_CONFIG, (err, store) => {
      if (err) {
        console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);
        return;
      }
      store.executeSql(SQL_CREATE_TABLE);
      console.info('executeSql Succeeded in getting RdbStore.');
});

更多关于HarmonyOS 鸿蒙Next arkTS关系型数据库建表SQL语句怎么写,字段类型怎么对应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


谢谢指点,这样是可以的。但是因为我的主要是存中文,所以后来用了NTEXT(2070000),因为关系型数据库一条不能超过2M。

在HarmonyOS鸿蒙的arkTS中,如果你正在使用关系型数据库,并且需要编写SQL语句来创建表以及定义字段类型,可以参考以下格式。需要注意的是,具体的SQL语法可能会根据你使用的数据库系统(如SQLite、MySQL等)有所不同。以下是一个基于通用SQL语法的示例:

CREATE TABLE 表名 (
    字段1 数据类型1 PRIMARY KEY, -- 主键字段,数据类型如INTEGER, TEXT等
    字段2 数据类型2 NOT NULL,    -- 非空字段,数据类型如REAL, BLOB等
    字段3 数据类型3 DEFAULT 默认值, -- 带默认值的字段
    ...
    字段N 数据类型N
);

在鸿蒙arkTS中,字段类型通常与底层数据库系统对应,例如:

  • INTEGER:整型
  • REAL:浮点型
  • TEXT:字符串类型
  • BLOB:二进制大对象

假设你要创建一个用户表,包含用户ID(主键)、用户名(非空字符串)和年龄(整型,默认值为0),SQL语句可能如下:

CREATE TABLE 用户 (
    用户ID INTEGER PRIMARY KEY,
    用户名 TEXT NOT NULL,
    年龄 INTEGER DEFAULT 0
);

请根据你使用的具体数据库系统调整数据类型和语法。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部