Android SQLiteException:near";用户id";:语法错误(代码1)
在创建表时,我在用户id附近遇到一个错误,但一切看起来都很好。请帮忙 这是我的疑问:Android SQLiteException:near";用户id";:语法错误(代码1),android,sqlite,create-table,Android,Sqlite,Create Table,在创建表时,我在用户id附近遇到一个错误,但一切看起来都很好。请帮忙 这是我的疑问: String CREATE_USERS_IN_CONVERSATION_TABLE= " CREATE TABLE IF NOT EXISTS "+ UsersInConversationEntry.TABLE_NAME + "( " + UsersInConversationEntry.CON_ID + " INTEGER, " + " FOREIGN KEY ("+UsersInC
String CREATE_USERS_IN_CONVERSATION_TABLE= " CREATE TABLE IF NOT EXISTS "+ UsersInConversationEntry.TABLE_NAME + "( "
+ UsersInConversationEntry.CON_ID + " INTEGER, " + " FOREIGN KEY ("+UsersInConversationEntry.CON_ID+") REFERENCES "+ConversationEntry.TABLE_NAME +"("+ConversationEntry.CON_ID+"), "
+ UsersInConversationEntry.USER_ID + " INTEGER, " + " FOREIGN KEY ("+UsersInConversationEntry.USER_ID+") REFERENCES "+UserEntry.TABLE_NAME +"("+UserEntry.USER_ID+"),"
+ UsersInConversationEntry.HAS_BLOCKED + " TEXT NOT NULL, "
+ UsersInConversationEntry.LAST_UPDATED + " TEXT NOT NULL );";
db.execSQL(CREATE_USERS_IN_CONVERSATION_TABLE);
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.client.android.voices, PID: 31793
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.client.android.voices/com.client.android.voices.ChatActivity}: android.database.sqlite.SQLiteException: near "user_id": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS users_in_conversation( con_id INTEGER NOT NULL, FOREIGN KEY (con_id) REFERENCES Conversations(_id), user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users(_id),has_blocked TEXT NOT NULL, last_updated TEXT NOT NULL );
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.database.sqlite.SQLiteException: near "user_id": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS users_in_conversation( con_id INTEGER NOT NULL, FOREIGN KEY (con_id) REFERENCES Conversations(_id), user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users(_id),has_blocked TEXT NOT NULL, last_updated TEXT NOT NULL );
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
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.executeSql(SQLiteDatabase.java:1677)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
at com.client.android.voices.DataBase.VoicesDBHelper.onCreate(VoicesDBHelper.java:39)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:294)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:194)
at com.client.android.voices.ChatActivity.onCreate(ChatActivity.java:25)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
我的错误日志:
String CREATE_USERS_IN_CONVERSATION_TABLE= " CREATE TABLE IF NOT EXISTS "+ UsersInConversationEntry.TABLE_NAME + "( "
+ UsersInConversationEntry.CON_ID + " INTEGER, " + " FOREIGN KEY ("+UsersInConversationEntry.CON_ID+") REFERENCES "+ConversationEntry.TABLE_NAME +"("+ConversationEntry.CON_ID+"), "
+ UsersInConversationEntry.USER_ID + " INTEGER, " + " FOREIGN KEY ("+UsersInConversationEntry.USER_ID+") REFERENCES "+UserEntry.TABLE_NAME +"("+UserEntry.USER_ID+"),"
+ UsersInConversationEntry.HAS_BLOCKED + " TEXT NOT NULL, "
+ UsersInConversationEntry.LAST_UPDATED + " TEXT NOT NULL );";
db.execSQL(CREATE_USERS_IN_CONVERSATION_TABLE);
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.client.android.voices, PID: 31793
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.client.android.voices/com.client.android.voices.ChatActivity}: android.database.sqlite.SQLiteException: near "user_id": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS users_in_conversation( con_id INTEGER NOT NULL, FOREIGN KEY (con_id) REFERENCES Conversations(_id), user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users(_id),has_blocked TEXT NOT NULL, last_updated TEXT NOT NULL );
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.database.sqlite.SQLiteException: near "user_id": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS users_in_conversation( con_id INTEGER NOT NULL, FOREIGN KEY (con_id) REFERENCES Conversations(_id), user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users(_id),has_blocked TEXT NOT NULL, last_updated TEXT NOT NULL );
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
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.executeSql(SQLiteDatabase.java:1677)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
at com.client.android.voices.DataBase.VoicesDBHelper.onCreate(VoicesDBHelper.java:39)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:294)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:194)
at com.client.android.voices.ChatActivity.onCreate(ChatActivity.java:25)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
E/AndroidRuntime:致命异常:主
进程:com.client.android.voices,PID:31793
java.lang.RuntimeException:无法启动活动组件信息{com.client.android.voices/com.client.android.voices.ChatActivity}:android.database.sqlite.SQLiteException:靠近“user\u id”:语法错误(代码1):,编译时:创建表如果不存在,则用户\u在\u对话中(con\u id INTEGER不为NULL,外键(con\u id)引用对话(_id)、用户_id整数、外键(用户_id)引用用户(_id)、已阻止的文本不为NULL、上次更新的文本不为NULL);
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
位于android.app.ActivityThread.-wrap11(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
位于android.os.Handler.dispatchMessage(Handler.java:105)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6541)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
原因:android.database.sqlite.SQLiteException:near“user\u id”:语法错误(代码1):,编译时:如果不存在,则创建表用户\u在\u对话中(con\u id INTEGER不为NULL,外键(con\u id)引用对话(\u id),用户\u id INTEGER,外键(user\u id)引用用户(\u id),已阻止的文本不为空,上次更新的文本不为空);
位于android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
位于android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
位于android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
位于android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
位于android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
位于android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677)
位于android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
位于com.client.android.voices.DataBase.VoicesDBHelper.onCreate(VoicesDBHelper.java:39)
位于android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:294)
位于android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:194)
在com.client.android.voices.ChatActivity.onCreate(ChatActivity.java:25)上
位于android.app.Activity.performCreate(Activity.java:6975)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
位于android.app.ActivityThread.-wrap11(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
位于android.os.Handler.dispatchMessage(Handler.java:105)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6541)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
con\u id整数不为空,外键(con\u id)引用对话(\u id)
那应该在那里吗
编辑:
String CREATE_USERS_IN_CONVERSATION_TABLE= " CREATE TABLE IF NOT EXISTS "+ UsersInConversationEntry.TABLE_NAME + "( "
+ UsersInConversationEntry.CON_ID + " INTEGER, " + " FOREIGN KEY ("+UsersInConversationEntry.CON_ID+") REFERENCES "+ConversationEntry.TABLE_NAME +"("+ConversationEntry.CON_ID+"), "
+ UsersInConversationEntry.USER_ID + " INTEGER, " + " FOREIGN KEY ("+UsersInConversationEntry.USER_ID+") REFERENCES "+UserEntry.TABLE_NAME +"("+UserEntry.USER_ID+"),"
+ UsersInConversationEntry.HAS_BLOCKED + " TEXT NOT NULL, "
+ UsersInConversationEntry.LAST_UPDATED + " TEXT NOT NULL );";
db.execSQL(CREATE_USERS_IN_CONVERSATION_TABLE);
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.client.android.voices, PID: 31793
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.client.android.voices/com.client.android.voices.ChatActivity}: android.database.sqlite.SQLiteException: near "user_id": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS users_in_conversation( con_id INTEGER NOT NULL, FOREIGN KEY (con_id) REFERENCES Conversations(_id), user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users(_id),has_blocked TEXT NOT NULL, last_updated TEXT NOT NULL );
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.database.sqlite.SQLiteException: near "user_id": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS users_in_conversation( con_id INTEGER NOT NULL, FOREIGN KEY (con_id) REFERENCES Conversations(_id), user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users(_id),has_blocked TEXT NOT NULL, last_updated TEXT NOT NULL );
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
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.executeSql(SQLiteDatabase.java:1677)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
at com.client.android.voices.DataBase.VoicesDBHelper.onCreate(VoicesDBHelper.java:39)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:294)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:194)
at com.client.android.voices.ChatActivity.onCreate(ChatActivity.java:25)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
试着这样做:
String CREATE_USERS_IN_CONVERSATION_TABLE= " CREATE TABLE IF NOT EXISTS "+ UsersInConversationEntry.TABLE_NAME + "( "
+ UsersInConversationEntry.CON_ID + " INTEGER, "
+ UsersInConversationEntry.USER_ID + " INTEGER, "
+ UsersInConversationEntry.HAS_BLOCKED + " TEXT NOT NULL, "
+ UsersInConversationEntry.LAST_UPDATED + " TEXT NOT NULL,"
+ " FOREIGN KEY ("+UsersInConversationEntry.CON_ID+") REFERENCES "+ConversationEntry.TABLE_NAME +"("+ConversationEntry.CON_ID+"), "
+ " FOREIGN KEY ("+UsersInConversationEntry.USER_ID+") REFERENCES "+UserEntry.TABLE_NAME +"("+UserEntry.USER_ID+")"
+ ");";
db.execSQL(CREATE_USERS_IN_CONVERSATION_TABLE);
是的,如果我删除“,”,从那里,我在外键附近得到一个错误即使不为NULL也是不必要的,即使我删除了,我得到了相同的错误尝试将约束移动到create命令的末尾我没有得到你,你能帮我把代码示例粘贴到这里吗?我已经编辑了我的答案,你可以自己解决了。。。。但一切看起来都很好。请帮忙。。。你确定吗?我觉得你不好!不要回答,而是先用你自己试图解决的问题来修改你的问题。落选是因为没有表现出努力!