冲突(SQLiteDatabase.java:1469) 位于android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 在com.tal.android.myshull.DatabaseHandlerTest.addMessage(DatabaseHandlerTest.java:83)上 位于com.tal.android.myshull.TestDataBaseFragment$1.onClick(TestDataBaseFragment.java:53) 在android.view.view.performClick上(view.java:5198) 在android.view.view$PerformClick.run(view.java:21147) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:148) 位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
仔细检查了代码,它确实在数据库中创建了表冲突(SQLiteDatabase.java:1469) 位于android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 在com.tal.android.myshull.DatabaseHandlerTest.addMessage(DatabaseHandlerTest.java:83)上 位于com.tal.android.myshull.TestDataBaseFragment$1.onClick(TestDataBaseFragment.java:53) 在android.view.view.performClick上(view.java:5198) 在android.view.view$PerformClick.run(view.java:21147) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:148) 位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616),android,sqlite,Android,Sqlite,仔细检查了代码,它确实在数据库中创建了表 private static final String KEY_ID = "id"; private static final String KEY_USER_NAME = "user_name"; private static final String KEY_USER_MESSAGE = "user_messages"; String CREATE_MESSAGE_TABLE = "CREATE TABLE "
private static final String KEY_ID = "id";
private static final String KEY_USER_NAME = "user_name";
private static final String KEY_USER_MESSAGE = "user_messages";
String CREATE_MESSAGE_TABLE =
"CREATE TABLE "
+ " message " + "( "
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_USER_NAME + " TEXT, "
+ KEY_USER_MESSAGE + " TEXT" + ")";
您可能希望卸载应用程序以清除数据库并重新安装它,我认为@Pankaj Nimgade是正确的,无论何时更改sqlite结构,您都必须清除应用程序数据。因为如果存在同名的表,sqlite不会检查表中的任何更改。它只是假设表没有变化。看起来您已经更新了数据库创建表查询,或者设置
数据库\u VERSION=2
或清除应用程序数据
,然后重试。
02-04 23:17:26.830 14306-14306/com.android.myshull E/SQLiteLog: (1) table message has no column named user_name
02-04 23:17:26.830 14306-14306/com.android.myshull E/SQLiteDatabase: Error inserting user_name=Test user_messgae=TEST
android.database.sqlite.SQLiteException: table message has no column named user_name (code 1): , while compiling: INSERT INTO message(user_name,user_messgae) VALUES (?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
at com.tal.android.myshull.DatabaseHandlerTest.addMessage(DatabaseHandlerTest.java:83)
at com.tal.android.myshull.TestDataBaseFragment$1.onClick(TestDataBaseFragment.java:53)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
private static final String KEY_ID = "id";
private static final String KEY_USER_NAME = "user_name";
private static final String KEY_USER_MESSAGE = "user_messages";
String CREATE_MESSAGE_TABLE =
"CREATE TABLE "
+ " message " + "( "
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_USER_NAME + " TEXT, "
+ KEY_USER_MESSAGE + " TEXT" + ")";