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.database.sqlite.SQLiteConstraintException:外键约束失败(代码19)_Android_Sqlite_Constraints - Fatal编程技术网

android.database.sqlite.SQLiteConstraintException:外键约束失败(代码19)

android.database.sqlite.SQLiteConstraintException:外键约束失败(代码19),android,sqlite,constraints,Android,Sqlite,Constraints,我有以下在android应用程序中创建sqlLite DB的代码: private static final String CREATE_TABELLA_PERSONE = "CREATE TABLE TB_PERSONE " + "(_ID integer," + "CODICE_PERSONA text not null, DESC_PERSONA text null, " + "PRIMARY KEY (CODICE_PERSONA));"; 及 当我调用函数删除“TB_PERSONE”

我有以下在android应用程序中创建sqlLite DB的代码:

private static final String CREATE_TABELLA_PERSONE = "CREATE TABLE TB_PERSONE "
+ "(_ID integer,"
+ "CODICE_PERSONA text not null, DESC_PERSONA text null, "
+ "PRIMARY KEY (CODICE_PERSONA));";

当我调用函数删除“TB_PERSONE”中的一行时

应用程序显示此错误:

04-27 11:15:27.152: E/AndroidRuntime(22031): FATAL EXCEPTION: main
04-27 11:15:27.152: E/AndroidRuntime(22031): android.database.sqlite.SQLiteConstraintException:           
foreign key constraint failed (code 19)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:727)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at it.jackpot21.personalmoney.DbAdapter.SQLdelete(DbAdapter.java:89)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at it.jackpot21.personalmoney.PersoneActivity$5.onClick(PersoneActivity.java:215)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.view.View.performClick(View.java:4084)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.view.View$PerformClick.run(View.java:16966)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.os.Handler.handleCallback(Handler.java:615)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.os.Looper.loop(Looper.java:137)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.app.ActivityThread.main(ActivityThread.java:4745)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at java.lang.reflect.Method.invokeNative(Native Method)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at java.lang.reflect.Method.invoke(Method.java:511)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-27 11:15:27.152: E/AndroidRuntime(22031):    at dalvik.system.NativeStart.main(Native Method)
有人能帮我吗
非常感谢!:)

编辑:
我把
放在DELETE SET NULL上解决了这个问题

谢谢

这意味着
一个站点
表中仍然包含一些引用您试图删除的人的记录。

您似乎正在从
TB\u PERSONE
中删除一条记录,该记录由表
一个站点
中的记录引用

所以

1) 在从
TB\u PERSONE
中删除记录之前,请先从
网站中删除记录

2) 在外键定义中的删除级联上设置

...
PERSONA text not null REFERENCES TB_PERSONE(CODICE_PERSONA) ON DELETE CASCADE ...
...

请确保
字符串id
不为空,以便可以执行下面的代码

public int SQLdelete(String tabella, String id) {
    return database.delete(tabella, "_ID=" + id, null);
}

你试过什么?检查此链接:并检查此链接:但如果我在
TB\u PERSONE
中删除了一条记录,则我不能在
AN\u usite
中删除该记录。如果您仍然需要该AN\u usite,则可能需要一些映射表
...
PERSONA text not null REFERENCES TB_PERSONE(CODICE_PERSONA) ON DELETE CASCADE ...
...
public int SQLdelete(String tabella, String id) {
    return database.delete(tabella, "_ID=" + id, null);
}