2013-09-28 59 views
0

這張表有什麼問題嗎?創建表方法Android SQLite

public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_FIRST_NAME + " TEXT," 
       + KEY_LAST_NAME + " TEXT," + KEY_MOB_NO + " TEXT," 
       + KEY_HOME_NO + " TEXT," + KEY_WORK_NO + " TEXT," 
       + KEY_HOME_ADDR + " TEXT," + KEY_EMAIL_ADDR + " TEXT," 
       + KEY_WORK_ADDR + " TEXT," + KEY_NOTES + " TEXT" + ");"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 

我的logcat說沒有列。任何想法,爲什麼這可能是?

編輯:logcat的

09-28 07:47:48.933: E/SQLiteLog(1908): (1) table contacts has no column named home_address 
09-28 07:47:48.953: E/SQLiteDatabase(1908): Error inserting home_address= first_name=543 work_address= mobile_number= work_number= last_name=543 notes= home_number= email_address= 
09-28 07:47:48.953: E/SQLiteDatabase(1908): android.database.sqlite.SQLiteException: table contacts has no column named home_address (code 1): , while compiling: INSERT INTO contacts(home_address,first_name,work_address,mobile_number,work_number,last_name,notes,home_number,email_address) VALUES (?,?,?,?,?,?,?,?,?) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at com.example.contactmanager.DatabaseHandler.addContact(DatabaseHandler.java:80) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at com.example.contactmanager.NewContactActivity$1.onClick(NewContactActivity.java:63) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.view.View.performClick(View.java:4240) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.view.View$PerformClick.run(View.java:17721) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.os.Handler.handleCallback(Handler.java:730) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.os.Handler.dispatchMessage(Handler.java:92) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.os.Looper.loop(Looper.java:137) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at java.lang.reflect.Method.invoke(Method.java:525) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-28 07:47:48.953: E/SQLiteDatabase(1908):  at dalvik.system.NativeStart.main(Native Method) 
+0

post full logcat –

+0

在此處發佈您的logcat。 –

+0

您以前是否擁有較少列的同一張表?如果稍後添加更多列,則數據庫不會升級。 – Szymon

回答

2

嘗試卸載並重新運行該應用程序。這可能是因爲您向定義添加了更多列,並且數據庫已經安裝,因此未添加新列。 onCreate方法在數據庫初始安裝時僅運行一次。它永遠不會再運行。當你需要升級時,有一個單獨的方法onUpgrade - 但它應該用於實際發佈新版本時。

+0

謝謝,非常感謝。 – Ogen