,이 표는 3 열 구성 오류 업데이트 SQLite는 안드로이드 I 데이터베이스 MS_EVENT_CONFIRMATION에 테이블이
을 EVENT_ID
- 그리고 코드를 만들고 싶어 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)
당신이 내 실수 어디 말해 도와 주시겠습니까?
WHERE Username = adminadmin' USERNAME이 문자열 인 경우 문자열을 전달해야합니다 :'WHERE Username = 'adminadmin''. –
@DerGolem 감사합니다. 'string'을 추가했는데 작동했지만 다른 프로그램의 코드도 업데이트되었지만 'string'을 사용하지 않아도 작동했습니다. 이번에는 이전 코드와 어떻게 다른지 궁금합니다. –
아마도 ** 바운드 매개 변수 ** (**? ** 자리 표시 자 사용)를 올바르게 사용하고있을 것입니다. –