鸿蒙Next数据库如何查询boolean类型数据

在鸿蒙Next的数据库中,如何正确查询boolean类型的数据?我在使用SQL语句时遇到了问题,比如用WHERE is_active = true这样的条件查询不到结果。请问正确的查询语法是什么?是否需要特殊的数据类型转换?

2 回复

鸿蒙Next里查boolean?简单!用SQL的WHERE子句就行,比如 SELECT * FROM 表名 WHERE 布尔字段 = true。记住,true和false别拼错,不然数据库会给你个“你逗我玩呢”的眼神。

更多关于鸿蒙Next数据库如何查询boolean类型数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,数据库查询boolean类型数据的方法如下:

1. 数据表定义 建表时使用INTEGER类型存储boolean值(0表示false,1表示true):

CREATE TABLE User (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    is_active INTEGER  -- 存储boolean值
)

2. 查询方式 使用标准SQL语法进行查询:

// 查询所有激活用户
String sql = "SELECT * FROM User WHERE is_active = 1";

// 查询所有非激活用户  
String sql = "SELECT * FROM User WHERE is_active = 0";

// 使用参数化查询
String sql = "SELECT * FROM User WHERE is_active = ?";
String[] selectionArgs = {"1"};  // 查询true值

3. 完整示例代码

// 构建查询条件
RdbPredicates predicates = new RdbPredicates("User");
predicates.equalTo("is_active", 1);  // 查询is_active=true的记录

// 执行查询
ResultSet resultSet = rdbStore.query(predicates, 
    new String[]{"id", "name", "is_active"});

// 遍历结果集
while (resultSet.goToNextRow()) {
    int id = resultSet.getInt(resultSet.getColumnIndex("id"));
    String name = resultSet.getString(resultSet.getColumnIndex("name"));
    boolean isActive = resultSet.getInt(resultSet.getColumnIndex("is_active")) == 1;
    
    // 处理数据...
}

关键点说明:

  • 鸿蒙数据库没有原生boolean类型,需要用INTEGER模拟
  • 查询时直接使用0/1进行条件过滤
  • 读取时通过 getInt() == 1 转换为boolean值
  • 建议使用参数化查询防止SQL注入

这种设计与其他移动端数据库(如SQLite)的处理方式保持一致。

回到顶部