0

我正在开发一个应用程序,但我遇到了一个困扰我数小时的问题,我无法弄清楚。

这是代码的一部分:

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

4 回答 4

1

你有没有尝试过

cursor = db.rawQuery("SELECT * FROM Answers WHERE QLink = '" + id + "'", null);
于 2013-08-29T01:13:16.603 回答
0

你试过绑定吗?

String id = Integer.toString(getID())
cursor = db.rawQuery("SELECT * FROM Answers WHERE QLink = ?", new String[]{id});
于 2013-08-29T01:20:01.897 回答
0

我一直在测试它,这是我的看法。我希望能帮助你。

我用 INTEGER TYPE 的“QLink”列创建表。

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

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

我执行这样的查询消息“select * from TEST_TABLE where QLink = 4;”,没有结果。
我再试一次,“select * from TEST_TABLE where QLink = '4';”,结果就出来了。

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

我建议您检查 ID 值是否在表格中有空白字符串,希望您能找到答案。

于 2013-08-29T03:04:26.433 回答
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

于 2013-08-29T01:53:45.757 回答