Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLiteException:near";用户id";:语法错误(代码1)_Android_Sqlite_Create Table - Fatal编程技术网

Android SQLiteException:near";用户id";:语法错误(代码1)

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

在创建表时,我在用户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, " + " 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命令的末尾我没有得到你,你能帮我把代码示例粘贴到这里吗?我已经编辑了我的答案,你可以自己解决了。。。。但一切看起来都很好。请帮忙。。。你确定吗?我觉得你不好!不要回答,而是先用你自己试图解决的问题来修改你的问题。落选是因为没有表现出努力!