SQLite 데이터베이스에서 선택한 특정 값을 어떻게 얻을 수 있습니까? 버튼을 클릭하면 앱이 충돌합니다.

NewCoder

버튼 속성.

버튼 btnLogin의 자바 함수

    public void LoginT(View v){     
        Cursor c = db.rawQuery("select * from Users where username=? and password=?", new String[] {username,password});
         username = c.getString(0);
         password = c.getString(1);

        Toast.makeText(this, (String)username, Toast.LENGTH_LONG).show();

    }

로그인을 위해 이것을 사용할 것이지만 값을 표시하는 것을 테스트하고 있지만 아무 일도 일어나지 않습니다.

다음은 logcat입니다.

 03-11 06:15:38.008: E/AndroidRuntime(1522): FATAL EXCEPTION: main
03-11 06:15:38.008: E/AndroidRuntime(1522): java.lang.IllegalStateException: Could not execute method of the activity
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.view.View$1.onClick(View.java:3591)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.view.View.performClick(View.java:4084)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.view.View$PerformClick.run(View.java:16966)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.os.Handler.handleCallback(Handler.java:615)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.os.Looper.loop(Looper.java:137)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.app.ActivityThread.main(ActivityThread.java:4745)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at java.lang.reflect.Method.invokeNative(Native Method)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at java.lang.reflect.Method.invoke(Method.java:511)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at dalvik.system.NativeStart.main(Native Method)
03-11 06:15:38.008: E/AndroidRuntime(1522): Caused by: java.lang.reflect.InvocationTargetException
03-11 06:15:38.008: E/AndroidRuntime(1522):     at java.lang.reflect.Method.invokeNative(Native Method)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at java.lang.reflect.Method.invoke(Method.java:511)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.view.View$1.onClick(View.java:3586)
03-11 06:15:38.008: E/AndroidRuntime(1522):     ... 11 more
03-11 06:15:38.008: E/AndroidRuntime(1522): Caused by: java.lang.IllegalArgumentException: the bind value at index 2 is null
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:164)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
03-11 06:15:38.008: E/AndroidRuntime(1522):     at com.example.twistedfatetraining.Login.LoginT(Login.java:29)
03-11 06:15:38.008: E/AndroidRuntime(1522):     ... 14 more
블랙 벨트

java.lang.IllegalArgumentException : 색인 2의 바인드 값이 널입니다.

문제는 쿼리의 선택 인수에 있습니다. 비밀번호가 null 일 수 있습니다.

쿼리를 실행하기 전에 입력 값을 확인하십시오.

if (username == null || password == null) {
   // show dialog or toast
   return 
}
Cursor c = db.rawQuery("select * from Users where username=? and password=?", new String[] {username, password});

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관