我正在敲打这几个小时,我测试了很多方法,我知道问题出在哪里,但我无法弄清楚如何修复它,我需要一个外部观点。
这是我的查询代码:
public Cursor getAllExpensesUser(int user){
String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = "+ user +")";
return mDb.rawQuery(sql, null);
}
使用此查询,它不会返回任何内容。
当使用以下查询时,它返回我想要的行...显然我直接使用id号。
`String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = 2)";`
我也尝试过参数:
public Cursor getAllExpensesUser(int user){
String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = ?)";
String[] arguments = {Integer.toString(user)};
return mDb.rawQuery(sql, arguments);
因此,问题在于我使用变量时。
任何人都可以看到我搞砸了吗?
谢谢
答案 0 :(得分:0)
应为WHERE id_user = '" + user + "')";
SQL需要在equals右侧的数据周围使用单引号。
答案 1 :(得分:0)
尝试替换
String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = "+ user +")";
带
String sql = new String("SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = "+ String.valueOf(user) +")");
编辑:使用String.valueOf
代替Integer.toString