首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何按整数查询SQLite?

如何按整数查询SQLite?
EN

Stack Overflow用户
提问于 2019-05-29 21:07:43
回答 1查看 227关注 0票数 0

我有一个SQL表,如下所示:

代码语言:javascript
复制
ID(string)    Name(string)    Width(double)   Height(double)   Selected(int)

12345678      Book            210             297              1
12345679      Display         530             326              0
12345680      Phone           70              140              0

我可以通过传递一个字符串参数来按ID和名称查询它们,但所有int和double查询都返回null。为什么?

这是我尝试过的代码:

代码语言:javascript
复制
Cursor cursor = mDatabase.query(  "Objects",null, "Selected" + " = ?", new String[]{String.valueOf(1)},null,null,null);
ObjectDataBase.ObjectCursor objectCursor = new 
ObjectDataBase.ObjectCursor(cursor);
try {
    if (objectCursor.getCount() == 0) {  return null;  }
    objectCursor.moveToFirst();
    return objectCursor.getObject();
} finally { cursor.close();}

ObjectDataBase是数据库类,ObjectCursor是游标包装和ObjectDataBase的内部类。

当我使用DB浏览器浏览数据库时,数据是正确的,那么还会有什么错误呢?

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 05:29:21

当我使用DB浏览器浏览数据库时,数据是正确的,那么还会有什么错误呢?

a) DB浏览器中的数据可能不是设备上的数据。

  • 这是问题的常见原因。
  • 要排除这种情况,我建议运行不带select子句的查询,以便返回所有行以及一些基本的调试

比如

代码语言:javascript
复制
Cursor cursor = mDatabase.query("Objects",null, "Selected" + " = ?", new String[]{String.valueOf(1)},null,null,null);
Log.d("CURSORINFO","The Cursor has " + String.valueOf(cursor.getCount()) + " rows."); //<<<<<<<<<< 4 DEBUG
DatabaseUtils.dumpCursor(cursor); //<<<<<<<<<< 4 DEBUG

ObjectDataBase.ObjectCursor objectCursor = new 
ObjectDataBase.ObjectCursor(cursor);
try {
    if (objectCursor.getCount() == 0) {  return null;  }
    objectCursor.moveToFirst();
    return objectCursor.getObject();
} finally { cursor.close();}

  • 如果日志中的第一条消息报告有0行,则表中没有数据。
  • 如果表中有数据,则dumpCursor方法的输出将输出所有数据。您需要检查它是否与您期望的表保持的内容相匹配。
  • 如果数据与期望的数据相匹配,则重新引入select子句并重新运行。行计数为0,则问题出在select子句。

b)在try子句中包装代码

  • 如果有潜在的异常,这可以隐藏有用的信息。
  • 你的代码会更好,因为:-

返回rv = null;if (objectCursor.moveToFirst()) { rv = objectCursor.getObject();} cursor.close();ObjectType rv;

  • 如果发生异常,则您将知道该异常。

c)游标包装代码未正确赋值。

  • 由于问题中没有包括代码,所以除了检查代码之外,不可能说任何其他的话。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56361411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档