vendredi 15 janvier 2016

Android SQLite query WHERE clause

Is this correct way to form SQLite query with WHERE and its arguments, because I am getting error the bind value at index 4 is null.

public Cursor getBankomatLocation(){
    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

    String [] sqlSelect = {"0 _id", "Naslov", "Kraj"};
    String sqlTables="Bankomati_db";
    String sqlWhere = "Banka=? AND(Posta BETWEEN ? AND ? OR Kraj = ?)";
    String [] args ={selectedBank, selectedPostaPod, selectedPostaNad, selectedKraj};
    Log.d("getBankomatLocation", "selectedBank" + selectedBank);
    qb.setTables(sqlTables);
    Cursor c =qb.query(db, sqlSelect, sqlWhere, args, null, null, null);
    c.moveToFirst();
    return c;
}

SQL statement: SELECT Naslov, Kraj FROM Bankomati_db Where Banka = SelectedBank AND (Posta BETWEEN selectedPostaPod AND SelectedPostaNad OR kraj = selectedKraj)

Error msg: 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: FATAL EXCEPTION: main 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jenko.bojan.a2/com.jenko.bojan.a2.BankomatiActivity}: java.lang.IllegalArgumentException: the bind value at index 4 is null 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.access$700(ActivityThread.java:134) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4867) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: the bind value at index 4 is null 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:164) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:400) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:294) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at com.jenko.bojan.a2.MyDatabase.getBankomatLocation(MyDatabase.java:81) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at com.jenko.bojan.a2.BankomatiActivity.Location(BankomatiActivity.java:61) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at com.jenko.bojan.a2.BankomatiActivity.onCreate(BankomatiActivity.java:47) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5047) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056) 01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.access$700(ActivityThread.java:134)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4867)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)  01-15 13:26:19.738 2682-2682/com.jenko.bojan.a2 E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 

Aucun commentaire:

Enregistrer un commentaire