HarmonyOS 鸿蒙Next arkTS关系型数据库建表SQL语句怎么写,字段类型怎么对应
HarmonyOS 鸿蒙Next arkTS关系型数据库建表SQL语句怎么写,字段类型怎么对应 使用arkTS编程,在创建关系型数据库时,对于string数据,以前使用的SQL字段类型是VARCHAR。
现在使用API12开发,看了官方文档,不是很明白,不知道应该使用哪种类型,是TEXT、VARCHAR,还是string(有这个字段类型吗?)。文档截图如下:
当前需求,数据库主要用来存放中文字符,长度在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()函数。(详情)
建表失败,是什么原因呢,不能使用NVARCHAR吗?但是NVARCHAR(4000)又可以。
需要注意的地方,如果是通过连字符方式拼接的SQL语句,如下截图,注意不要省略红线处的空格符,省略了,会导致语句关键字NVARCHAR不正确,因为与前面的字符连成一个单词了,不是NVARCHAR了。
更多关于HarmonyOS 鸿蒙Next arkTS关系型数据库建表SQL语句怎么写,字段类型怎么对应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
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