2014-12-18 1 views
0

,이 표는 3 열 구성 오류 업데이트 SQLite는 안드로이드 I 데이터베이스 MS_EVENT_CONFIRMATION에 테이블이

  • MEMBER_USERNAME
  • EVENT_CONFIRMATION
  • 을 EVENT_ID

    1. 그리고 코드를 만들고 싶어 EVENT_CONFIRMATION 열을 업데이트하려고했지만 오류가있어 항상 그런 열을 말하지 않았습니다 : ...

      나는 데이터베이스에 내 활동에서 데이터를 전달하려는 경우

      String defaultConfirmation = "pending"; 
          String Query = "SELECT * FROM " + MS_GROUP_DETAIL + " WHERE " 
            + GROUP_ID + "=?"; 
      
          Cursor c = ourDatabase.rawQuery(Query, new String[] { groupId }); 
          int iMember = c.getColumnIndex(MEMBER_USERNAME); 
      
          String username = ""; 
      
          ContentValues cv2 = new ContentValues(); 
      
          for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
           username = c.getString(iMember); 
      
           if (!checkConfirmation(eventId, username)) { 
            cv2.put(EVENT_ID, eventId); 
            cv2.put(MEMBER_USERNAME, username); 
            cv2.put(EVENT_CONFIRMATION, defaultConfirmation); 
            ourDatabase.insert(MS_EVENT_CONFIRMATION, null, cv2); 
           } 
          } 
      

      이것은 :

      내가 같은 테이블을 삽입 할 곳입니다

       db.execSQL("CREATE TABLE IF NOT EXISTS " + MS_EVENT_CONFIRMATION 
             + "(" + EVENT_ID + " INTEGER, " + MEMBER_USERNAME 
             + " TEXT, " + EVENT_CONFIRMATION + " TEXT, PRIMARY KEY(" 
             + EVENT_ID + ", " + MEMBER_USERNAME + "), FOREIGN KEY (" 
             + MEMBER_USERNAME + ") REFERENCES " + MS_MEMBER + "(" 
             + MEMBER_USERNAME + "), FOREIGN KEY (" + EVENT_ID 
             + ") REFERENCES " + MS_EVENT + "(" + EVENT_ID + "));"); 
      

      테이블 만들기 :여기 내 코드입니다 :

       case R.id.bDoAttendingEvent: 
           AlertDialog.Builder builder = new AlertDialog.Builder(this); 
           builder.setMessage("You choose to attend this event?") 
             .setCancelable(false) 
             .setPositiveButton("Yes", 
               new DialogInterface.OnClickListener() { 
                public void onClick(DialogInterface dialog, 
                  int id) { 
                 myDb.open(); 
                 string = "attend"; 
                 myDb.confirmEvent(eventId, Username, string); 
                 attend.setBackgroundColor(Color.BLUE); 
                 notAttend.setBackgroundColor(Color.GRAY); 
                 confirmation.setText("Confirmation : Attend"); 
                 myDb.close(); 
      
                } 
               }) 
             .setNegativeButton("No", 
               new DialogInterface.OnClickListener() { 
                public void onClick(DialogInterface dialog, 
                  int id) { 
                 dialog.cancel(); 
                } 
               }); 
           AlertDialog alert = builder.create(); 
           alert.show(); 
           break; 
      

      그리고 데이터베이스 파일은 다음과 같습니다. ',992,967,

      public void confirmEvent(String eventId, String username, String string) { 
          // TODO Auto-generated method stub 
          ContentValues cv = new ContentValues(); 
          cv.put(EVENT_CONFIRMATION, string); 
      
          ourDatabase.update(MS_EVENT_CONFIRMATION, cv, MEMBER_USERNAME + "=" 
            + username + " AND " + EVENT_ID + "=" + eventId, null); 
      
      } 
      

      로그 캣 :

      12-18 22:18:15.966: E/SQLiteLog(16892): (1) no such column: adminadmin 
      12-18 22:18:15.966: D/AndroidRuntime(16892): Shutting down VM 
      12-18 22:18:15.966: W/dalvikvm(16892): threadid=1: thread exiting with uncaught exception (group=0x41da7c08) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): FATAL EXCEPTION: main 
      12-18 22:18:15.986: E/AndroidRuntime(16892): Process: com.thesis.teamizer, PID: 16892 
      12-18 22:18:15.986: E/AndroidRuntime(16892): android.database.sqlite.SQLiteException: no such column: adminadmin (code 1): , while compiling: UPDATE MsEventConfirmation SET EventConfirmation=? WHERE Username=adminadmin AND EventId=1 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1113) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:690) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1706) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1654) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at com.thesis.teamizer.Database.confirmEvent(Database.java:1128) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at com.thesis.teamizer.EventDetail$1.onClick(EventDetail.java:112) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.os.Handler.dispatchMessage(Handler.java:102) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.os.Looper.loop(Looper.java:146) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at android.app.ActivityThread.main(ActivityThread.java:5602) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at java.lang.reflect.Method.invokeNative(Native Method) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at java.lang.reflect.Method.invoke(Method.java:515) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
      12-18 22:18:15.986: E/AndroidRuntime(16892): at dalvik.system.NativeStart.main(Native Method) 
      

      당신이 내 실수 어디 말해 도와 주시겠습니까?

    +1

    WHERE Username = adminadmin' USERNAME이 문자열 인 경우 문자열을 전달해야합니다 :'WHERE Username = 'adminadmin''. –

    +0

    @DerGolem 감사합니다. 'string'을 추가했는데 작동했지만 다른 프로그램의 코드도 업데이트되었지만 'string'을 사용하지 않아도 작동했습니다. 이번에는 이전 코드와 어떻게 다른지 궁금합니다. –

    +0

    아마도 ** 바운드 매개 변수 ** (**? ** 자리 표시 자 사용)를 올바르게 사용하고있을 것입니다. –

    답변

    1

    는 SQL에서이

    ourDatabase.update(MS_EVENT_CONFIRMATION, cv, MEMBER_USERNAME + "=" 
        + "'" + username + "'" + " AND " + EVENT_ID + "=" + eventId, null); 
    

    을 시도하십시오 사전에 감사합니다, 문자열 리터럴은 인용해야합니다.

    +0

    나는 당신을 트레이드 해 주었지만 여전히 SQLiteException 예외를 던졌습니다. 인식 할 수없는 토큰 –

    +0

    이 에러의 스택 추적을 추가 할 수 있습니까? 또한 두 번째 SQL 문을 시도하십시오. – Rohit5k2

    +0

    그것은 이미 작동했습니다. 코드에 'string'을 추가했습니다. 감사합니다. :) –

    관련 문제