Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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
Android 如何解决Sqlite异常:已达到数据库的已编译sql语句缓存的最大大小_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android 如何解决Sqlite异常:已达到数据库的已编译sql语句缓存的最大大小

Android 如何解决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

我打电话给selectQuery

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"});

在这之后,我什么也得不到。我的错误是什么?

您的前后查询是等价的,它们应该给您相同的结果,减去预处理语句缓存问题。你所做的是正确的。我猜您在其他地方引入了另一个错误,或者数据库的状态/内容已更改