How to fix the bind value at index 1 is null in android

11,809

it simple says that the value you are passing in selectionArgs is null.make sure passed value is not null.Please check for username Variable's value before executing this query

if(userName!=null){
    Cursor cursor=db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null);
}

inside getSinlgeEntry(String userName) method.Hope it helps.

Share:
11,809
Sundeep
Author by

Sundeep

Updated on June 13, 2022

Comments

  • Sundeep
    Sundeep almost 2 years

    I am creating an android application that consists of registration form using sqlite database and forgot password field after clicking forgot password field security check to show password with reset button.When i click the reset password field it is showing the bind value at index 1 is null please help me to fix this.This is my activity code after clicking of forgot filed:

     forgot_reset = (ButtonFlat)forgot_dialog.findViewById(R.id.dialog_button_Reset_forgot);
                        forgot_reset.setOnClickListener(new View.OnClickListener() 
                        {
    
                            @Override
                            public void onClick(View v) 
                            {
                                String stored_sec_hint = loginDataBaseAdapter.getSinlgeEntry(dialog_seq_answer);
                                if(confirm_sec_hint_forgot.equals(""))
                                {
                                    Toast.makeText(Login_Page.this, "Please enter your security hint to proceed", Toast.LENGTH_LONG).show();
                                }
                                else
                                {
                                    if(stored_sec_hint==null)
                                    {
                                        Toast.makeText(Login_Page.this, "Please Enter correct security hint to proceed", Toast.LENGTH_LONG).show();
                                    }
                                    else
                                    {
                                        show_pwd.setText(stored_pass);
                                    }
                                }
                            }
                        });
    
                        forgot_dialog.show();
                }
    
            });
    

    This is my DB adapter class:

    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    
    public class LoginDataBaseAdapter 
    {
            static final String DATABASE_NAME = "login.db";
            static final int DATABASE_VERSION = 1;
            public static final int NAME_COLUMN = 1;
            // TODO: Create public field for each column in your table.
            // SQL Statement to create a new database.
            static final String DATABASE_CREATE = "create table "+"LOGIN"+
                                         "( " +"ID"+" integer primary key autoincrement,"+"USERNAME  text UNIQUE,PASSWORD text,SECHINT text); ";
            // Variable to hold the database instance
            public  SQLiteDatabase db;
            // Context of the application using the database.
            private final Context context;
            // Database open/upgrade helper
            private DataBaseHelper dbHelper;
            public  LoginDataBaseAdapter(Context _context) 
            {
                context = _context;
                dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            public  LoginDataBaseAdapter open() throws SQLException 
            {
                db = dbHelper.getWritableDatabase();
                return this;
            }
            public void close() 
            {
                db.close();
            }
    
            public  SQLiteDatabase getDatabaseInstance()
            {
                return db;
            }
    
            public void insertEntry(String dialog_user_name_string,String dialog_pasword_string,String dialog_seq_answer)
            {
               ContentValues newValues = new ContentValues();
    
                newValues.put("USERNAME", dialog_user_name_string);
                newValues.put("PASSWORD",dialog_pasword_string);
                newValues.put("SECHINT", dialog_seq_answer);
                // Insert the row into your table
                db.insert("LOGIN", null, newValues);
                ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
            }
            public int deleteEntry(String dialog_pasword_string)
            {
                //String id=String.valueOf(ID);
                String where="USERNAME=?";
                int numberOFEntriesDeleted= db.delete("LOGIN", where, new String[]{dialog_pasword_string}) ;
               // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
                return numberOFEntriesDeleted;
            }   
            public String getSinlgeEntry(String userName)
            {
                Cursor cursor=db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null);
                if(cursor.getCount()<1) // UserName Not Exist
                {
                    cursor.close();
                    return "NOT EXIST";
                }
                cursor.moveToFirst();
                String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
                cursor.close();
                return password;                
            }
            public void  updateEntry(String forgot_new_password_string)
            {
                // Define the updated row content.
                ContentValues updatedValues = new ContentValues();
                // Assign values for each row.
                //updatedValues.put("USERNAME", dialog_user_name_string);
                updatedValues.put("PASSWORD",forgot_new_password_string);
    
    
                String where="PASSWORD = ?";
                db.update("LOGIN",updatedValues, where, new String[]{forgot_new_password_string});             
            }       
    }
    

    This is my logcat:

    02-17 18:24:02.590: E/AndroidRuntime(29035): FATAL EXCEPTION: main
        02-17 18:24:02.590: E/AndroidRuntime(29035): Process: com.medequip.c1testpanel, PID: 29035
        02-17 18:24:02.590: E/AndroidRuntime(29035): java.lang.IllegalArgumentException: the bind value at index 1 is null
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:164)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1339)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1186)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1057)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1225)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at com.medequip.c1testpanel.LoginDataBaseAdapter.getSinlgeEntry(LoginDataBaseAdapter.java:65)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at com.medequip.c1testpanel.Login_Page$2$1.onClick(Login_Page.java:144)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at com.gc.materialdesign.views.ButtonFlat.onDraw(ButtonFlat.java:83)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.draw(View.java:14728)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13588)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13635)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13509)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13635)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13509)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13635)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13509)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13635)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13509)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13635)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13509)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.View.getDisplayList(View.java:13635)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1627)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1506)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2722)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2587)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2210)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1189)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6223)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.Choreographer.doCallbacks(Choreographer.java:591)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.Choreographer.doFrame(Choreographer.java:560)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.os.Handler.handleCallback(Handler.java:808)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.os.Handler.dispatchMessage(Handler.java:103)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.os.Looper.loop(Looper.java:193)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at android.app.ActivityThread.main(ActivityThread.java:5292)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at java.lang.reflect.Method.invokeNative(Native Method)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at java.lang.reflect.Method.invoke(Method.java:515)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
        02-17 18:24:02.590: E/AndroidRuntime(29035):    at dalvik.system.NativeStart.main(Native Method)
    
  • Dr. aNdRO
    Dr. aNdRO over 5 years
    what if I want to put null?
  • mahdi
    mahdi over 3 years
    @Dr.aNdRO Refer to this for a solution for querying null columns.