在查询中使用变量的问题

时间:2011-08-04 18:03:16

标签: android sqlite

我正在敲打这几个小时,我测试了很多方法,我知道问题出在哪里,但我无法弄清楚如何修复它,我需要一个外部观点。

这是我的查询代码:

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);

因此,问题在于我使用变量时。

任何人都可以看到我搞砸了吗?

谢谢

2 个答案:

答案 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