Android 如何解决Sqlite异常:已达到数据库的已编译sql语句缓存的最大大小
我打电话给selectQueryAndroid 如何解决Sqlite异常:已达到数据库的已编译sql语句缓存的最大大小,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我打电话给selectQuery public Cursor selectQuery ( final String queryString) { try { return getReadOnlySQLiteDatabase().rawQuery( queryString, null); } catch ( Exception e ) { Logs.show(e); return null; } catch ( Erro
public Cursor selectQuery ( final String queryString) {
try {
return getReadOnlySQLiteDatabase().rawQuery( queryString, null);
} catch ( Exception e ) {
Logs.show(e);
return null;
} catch ( Error e ) {
Logs.show(e);
return null;
} finally {
}
}
对该函数的调用是无效的
c = LiveApplication.getDatabaseWrapper().selectQuery( "SELECT url FROM root_resource where resource_name = 'sports' ");
当我这样做的时候,我得到了一个例外
已达到数据库的已编译sql语句缓存的最大大小。请将sql语句更改为对bindargs使用“?”而不是使用实际值
所以我修改了我的代码
public Cursor selectQuery ( final String queryString, final String [] whereArgs) {
try {
Log.e("123", "Inside select query----"+whereArgs[0]);
return getReadOnlySQLiteDatabase().rawQuery( queryString, whereArgs);
} catch ( Exception e ) {
Logs.show(e);
return null;
} catch ( Error e ) {
Logs.show(e);
return null;
} finally {
}
}
电话变成了:
c = LiveApplication.getDatabaseWrapper().selectQuery( "SELECT url FROM root_resource where resource_name =?", new String[]{"sports"});
在这之后,我什么也得不到。我的错误是什么?您的前后查询是等价的,它们应该给您相同的结果,减去预处理语句缓存问题。你所做的是正确的。我猜您在其他地方引入了另一个错误,或者数据库的状态/内容已更改