Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android SQLite查询停止异步任务_Java_Android_Android Asynctask_Android Sqlite - Fatal编程技术网

Java Android SQLite查询停止异步任务

Java Android SQLite查询停止异步任务,java,android,android-asynctask,android-sqlite,Java,Android,Android Asynctask,Android Sqlite,我调试了代码,似乎sqlite查询停止了AsynkTask线程: Log.d(LOG_TAG, "Getting params"); Cursor c = null; try { String[] queryParams = new String[]{String.valueOf(commandQueueId), String.valueOf(DIRECTION_OUT)}; // ↓↓↓ STOPPING HERE ↓↓↓ c = dataSource.query(TABL

我调试了代码,似乎sqlite查询停止了AsynkTask线程:

    Log.d(LOG_TAG, "Getting params");
Cursor c = null;
try {
  String[] queryParams = new String[]{String.valueOf(commandQueueId), String.valueOf(DIRECTION_OUT)};
  // ↓↓↓ STOPPING HERE ↓↓↓
  c = dataSource.query(TABLE_USER_COMMAND, "queue_id = ? AND direction = ? AND _id > " + fromId, queryParams);

  Log.d(LOG_TAG, "After query");
  if (c.moveToFirst()) {
    UserCommand command;
    do {
      // Something with cursor
    } while (c.moveToNext());
  }

} catch (Exception e) {
  Log.e(LOG_TAG, "Error while querying", e);
} finally {
  Log.d(LOG_TAG, "Finnaly executed");
  if (null != c)
    c.close();
}
LogCat只显示“Getting params”字符串,然后不显示任何内容(没有错误或任何内容)。
在AsyncTask、dataSource对象中执行的代码使所有方法同步在UI线程查询中效果很好。可以是什么?

在您的条件中没有传递任何带有
\u id
的内容

"queue_id = ? AND direction = ? AND _id > "
应该是

"queue_id = ? AND direction = ? AND _id > 1(or may other integer parameter)" + fromId, queryParams

希望它能有所帮助

我认为问题在于您试图在查询字符串中包含_id-parameter(fromId)。因此,查询函数可能无法生成查询字符串

"queue_id = ? AND direction = ? AND _id > " + fromId
相反,您应该将fromId添加到selectionArgs(queryParams)中。创建一个字符串数组,其中包含queryParams和fromId。那么它应该会起作用

String[] queryParams = new String[]{String.valueOf(commandQueueId), String.valueOf(DIRECTION_OUT), String.valueOf(fromId)};
c = dataSource.query(TABLE_USER_COMMAND, "queue_id = ? AND direction = ? AND _id > ? ", queryParams ); //queryParams which include your fromId
数据源对象已同步所有方法

小心死锁!尝试只同步您的写入方法(插入、删除、更新)和非读取方法(查询),因为在读取数据时没有更改数据的风险
附言:我知道这个问题有点老了,以防万一别人读到了。

不正确。我确实传递了_id参数:
“和_id>”+fromId
。fromId是int。此外,我尝试在params数组中传递它。同样的行为,没有区别。同样的问题。