SQL语句SELECT * FROM Answers WHERE QLink = id不起作用

时间:2013-08-29 01:04:20

标签: java android sql

我正在开发一个应用程序,我遇到了一个问题,这个问题一直困扰着我几个小时,我无法理解它。

这是代码的一部分:

int id = getID();
cursor = db.rawQuery("SELECT * FROM Answers WHERE QLink = " + id, null);
int count = cursor.getCount();

所以问题是count总是等于0但不应该。我已经检查过id是不是错了。我删除了包括WHERE在内的所有内容后得到了一些结果,所以表格很好。 QLink字段类型是INTEGER,也许我应该将其替换为NUMERIC之类的东西?

4 个答案:

答案 0 :(得分:1)

你试过吗

cursor = db.rawQuery("SELECT * FROM Answers WHERE QLink = '" + id + "'", null);

答案 1 :(得分:0)

您是否尝试过绑定?

String id = Integer.toString(getID())
cursor = db.rawQuery("SELECT * FROM Answers WHERE QLink = ?", new String[]{id});

答案 2 :(得分:0)

1)QLink是否是正确的列名?

2)在运行.getCount()

之前尝试运行此功能
moveToFirst()

我记得在使用.getCount()

之前执行某些操作之前,查询不会运行

3)你试过吗?

db.query("Answers", 
  new String[] { "whatever columns" }, 
  "QLink = ?", new String[] { id }, null, null, null);

db.query("Answers", 
      new String[] { "whatever columns" }, 
      "QLink = " + id, null, null, null, null);

SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("select * from answers where qlink = ?");
stmt.bindLong(1, id);
stmt.execute();

您可能需要更改qlink的数据类型。

教程:http://www.anotherandroidblog.com/2010/08/04/android-database-tutorial/3/#getrowasarray

答案 3 :(得分:0)

我一直在测试它,这是我的意见。我希望能帮到你。

我使用INTEGER TYPE创建带有'QLink'列的表。

我通过SQLite Browser(sqlite程序之一)插入日期抛出。

问题是“QLink”列肯定是INTEGER TYPE, 但我可以插入'4''4',这意味着它不是整数类型,即带空格的字符串类型。

我执行这样的查询消息“select * from TEST_TABLE QLink = 4;”,没有结果。
我再试一次,“从TEST_TABLE中选择* QLink ='4';”,结果就是这样。

我很少使用sqlite,所以我不专业。 但我不明白为什么我可以将字符串值插入INTEGER TYPE列。

我建议您检查表格上的ID值是否为空白字符串,我希望您找到答案。