Sqflite查询提示‘no such column’,明明tag字段存在的问题
问题原因
你写的查询语句里,tag = Home中的Home是字符串值,但没有用单引号包裹,SQLite会把它识别为列名,而你的表中并没有名为Home的列,所以抛出no such column: Home的错误。
修复方案
把字符串值用单引号括起来即可:
List results = await db.rawQuery('''SELECT * FROM pomodoro WHERE (tag = 'Home') AND (date BETWEEN ${start.millisecondsSinceEpoch} AND ${end.millisecondsSinceEpoch})''');
更安全的写法(推荐)
直接拼接字符串存在SQL注入风险,建议用参数化查询的方式传递值:
List results = await db.rawQuery( '''SELECT * FROM pomodoro WHERE (tag = ?) AND (date BETWEEN ? AND ?)''', ['Home', start.millisecondsSinceEpoch, end.millisecondsSinceEpoch] );
这种写法既避免了语法错误,也提升了代码的安全性。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

