Java SQLiteDatabase rawQuery()中的StringIndexOutOfBoundsException

Java SQLiteDatabase rawQuery()中的StringIndexOutOfBoundsException,java,android,sqlite,sqlcipher,Java,Android,Sqlite,Sqlcipher,我无法回避这个例外。我错过了什么明显的东西吗 堆栈跟踪 12-05 20:07:43.129: E/AndroidRuntime(4154): FATAL EXCEPTION: Thread-1470 12-05 20:07:43.129: E/AndroidRuntime(4154): java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=6 12-05 20:07:43.129: E/

我无法回避这个例外。我错过了什么明显的东西吗

堆栈跟踪

12-05 20:07:43.129: E/AndroidRuntime(4154): FATAL EXCEPTION: Thread-1470
12-05 20:07:43.129: E/AndroidRuntime(4154): java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=6
12-05 20:07:43.129: E/AndroidRuntime(4154):     at java.lang.String.startEndAndLength(String.java:593)
12-05 20:07:43.129: E/AndroidRuntime(4154):     at java.lang.String.substring(String.java:1474)
12-05 20:07:43.129: E/AndroidRuntime(4154):     at net.sqlcipher.database.SQLiteProgram.<init>(SQLiteProgram.java:69)
12-05 20:07:43.129: E/AndroidRuntime(4154):     at net.sqlcipher.database.SQLiteQuery.<init>(SQLiteQuery.java:49)
12-05 20:07:43.129: E/AndroidRuntime(4154):     at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
12-05 20:07:43.129: E/AndroidRuntime(4154):     at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1420)
12-05 20:07:43.129: E/AndroidRuntime(4154):     at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1389)
12-05 20:07:43.129:E/AndroidRuntime(4154):致命异常:线程-1470
12-05 20:07:43.129:E/AndroidRuntime(4154):java.lang.StringIndexOutOfBoundsException:length=0;regionStart=0;区域长度=6
12-05 20:07:43.129:E/AndroidRuntime(4154):at java.lang.String.StartAndLength(String.java:593)
12-05 20:07:43.129:E/AndroidRuntime(4154):at java.lang.String.substring(String.java:1474)
12-05 20:07:43.129:E/AndroidRuntime(4154):at net.sqlcipher.database.SQLiteProgram.(SQLiteProgram.java:69)
12-05 20:07:43.129:E/AndroidRuntime(4154):at net.sqlcipher.database.SQLiteQuery.(SQLiteQuery.java:49)
12-05 20:07:43.129:E/AndroidRuntime(4154):at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
12-05 20:07:43.129:E/AndroidRuntime(4154):at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1420)
12-05 20:07:43.129:E/AndroidRuntime(4154):at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1389)

使用的查询

Query=
从dfs\u id=?按列分组2

(第1列、第2列、表格名称等是占位符,而不是实际名称)

传递的参数=
“a08eff29ee6a71dd_1381146091100_0002”



注意:我使用的是SQLCipher(围绕SQLCipher的包装),这与此异常无关。

我认为问题在于您使用的表名是
table
TABLE
是SQL中的一个命令;它不应用于表名。由于SQL不区分大小写,
相同。只需将表的名称更改为其他名称。

导致
StringIndexOutOfBoundsException
的原因如下

/* package */ SQLiteProgram(SQLiteDatabase db, String sql) {
    mDatabase = db;
    mSql = sql.trim();
    db.acquireReference();
    db.addSQLiteClosable(this);
    this.nHandle = db.mNativeHandle;

    // only cache CRUD statements
    String prefixSql = mSql.substring(0, 6); // <<<< HERE
您要么忘记添加另一个,要么您的
太多


是一个保留关键字。要使用这些名称,您必须引用它们。引号(“)、反勾(`)和方括号([])她的例外。请在您进行查询的地方发布Java代码。“AND”是一个输入错误。但是,是的,我发现问题是一个空字符串
WHERE {condition} AND {another condition expected here} GROUP BY ...