You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter sqflite中AND语句的使用方法咨询

在sqflite中使用AND条件执行查询的方法

嗨,别发愁啦!sqflite里使用AND条件和标准SQL的写法是完全一致的,只是在Flutter代码里执行的时候有几种更安全、更规范的实现方式,我给你详细说说:

方法1:使用rawQuery执行完整SQL语句

你原本写的SQL语句本身是正确的,直接用rawQuery执行就行,但强烈推荐用占位符?来传递参数,避免SQL注入风险,也不用手动处理字符串转义:

Future<List<Map<String, dynamic>>> fetchMatchingData() async {
  // 先获取数据库实例
  Database db = await openDatabase('your_db_name.db');
  
  String targetVal1 = "some_string";
  String targetVal2 = "another_string";
  
  // 带占位符的SQL查询
  final results = await db.rawQuery(
    'SELECT * FROM table_name WHERE column_1 = ? AND column_2 = ?',
    [targetVal1, targetVal2], // 占位符对应的参数列表
  );
  
  return results;
}

方法2:使用封装好的query方法

sqflite提供了更简洁的query方法,你可以在where参数里写AND条件,然后通过whereArgs传值:

Future<List<Map<String, dynamic>>> fetchMatchingDataWithQuery() async {
  Database db = await openDatabase('your_db_name.db');
  
  String targetVal1 = "some_string";
  String targetVal2 = "another_string";
  
  final results = await db.query(
    'table_name', // 表名
    where: 'column_1 = ? AND column_2 = ?', // WHERE条件
    whereArgs: [targetVal1, targetVal2], // 条件对应的参数
  );
  
  return results;
}

小提示

其实sqflite完全兼容标准SQL语法,所以你之前想写的SELECT * FROM table_name WHERE column_1 = "some_string" AND column_2 = "another_string";本身是有效的,但直接把字符串硬编码进去或者拼接变量会有安全隐患,所以上面两种用占位符的方式才是最佳实践哦~

内容的提问来源于stack exchange,提问作者Reuben Siama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:27:51