HarmonyOS鸿蒙Next中小数点怎么存入本地关系型数据库
HarmonyOS鸿蒙Next中小数点怎么存入本地关系型数据库 小数点怎么存入关系型数据库,比如99999.99,字段应该怎么写,别是字符串
7 回复
选择数据类型
DOUBLE
:双精度浮点型,适合常规场景FLOAT
:单精度浮点型,适合存储空间敏感场景
CREATE TABLE Sales (
id INTEGER PRIMARY KEY AUTOINCREMENT,
price DOUBLE NOT NULL, -- 使用双精度类型
amount FLOAT -- 使用单精度类型
)
const price: number = 99999.99;
await rdbStore.executeSql("INSERT INTO Sales(price) VALUES(?)", [price]);
更多关于HarmonyOS鸿蒙Next中小数点怎么存入本地关系型数据库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
NUMERIC:用于存储数值数据,自动选择存储方式。适合储存的值可能是整数也可能是浮点数
灵活性:NUMERIC类型可以存储整数或浮点数,具有较高的灵活性。
自动选择存储方式:SQLite会根据实际存储的值自动选择最合适的存储方式,例如,如果存储的是整数,则以INTEGER方式存储;如果存储的是浮点数,则以REAL方式存储。
适用场景:适用于需要存储精确数值的场景,如财务数据、测量值等。
Float: 单精度浮点数,可以存储约7位十进制数。
- Double: 双精度浮点数,可以存储约15位十进制数。
- Decimal或Numeric: 定点数,可以精确表示任意大小和小数位数,适用于需要精确计算的情况。
- 如果需要精确的金额或计数,建议使用Decimal类型。不同关系数据库系统,数据类型略有不同。
自带本地数据库呢,
real或numeric
在HarmonyOS Next中,使用关系型数据库存储小数点数据时,应使用REAL或DOUBLE类型字段。通过@Column
注解标记为对应类型即可,例如:
@Column(name = "price", type = ColumnType.DOUBLE)
private double price;
或使用REAL类型:
@Column(name = "score", type = "score", type = ColumnType.REAL)
private float score;
这两种类型都适用于存储浮点数。写入时会自动进行类型转换,读取时也会保持小数精度。
在HarmonyOS Next的关系型数据库中存储小数点数据,推荐使用REAL或DOUBLE类型字段。以下是具体实现方案:
- 数据库表定义示例:
import { relationalStore } from '@ohos.data.relationalStore';
const STORE_CONFIG = {
name: 'MyDatabase.db',
securityLevel: relationalStore.SecurityLevel.S1
};
const SQL_CREATE_TABLE = `
CREATE TABLE IF NOT EXISTS financial_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
amount REAL NOT NULL, /* 使用REAL类型存储小数 */
timestamp INTEGER
)`;
- 数据操作示例:
// 插入数据
const valueBucket = {
'amount': 99999.99, // 直接使用Number类型
'timestamp': new Date().getTime()
};
await rdbStore.insert('financial_data', valueBucket);
// 查询数据
const predicates = new relationalStore.RdbPredicates('financial_data');
const resultSet = await rdbStore.query(predicates);
while(resultSet.goToNextRow()) {
const amount = resultSet.getDouble(resultSet.getColumnIndex('amount')); // 获取Double值
console.log(`金额:${amount}`);
}
注意事项:
- REAL类型支持约15位有效数字
- 对于精确计算场景(如金融),建议在应用层使用Decimal.js等库处理
- 避免使用TEXT类型存储数值,会影响排序和计算性能
这种方案既保持了数值类型的高效计算特性,又能正确处理小数存储。