Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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

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 SQLiteConstraintException错误代码19:约束失败_Android_Sqlite_Error Code - Fatal编程技术网

Android SQLiteConstraintException错误代码19:约束失败

Android SQLiteConstraintException错误代码19:约束失败,android,sqlite,error-code,Android,Sqlite,Error Code,我知道您对这个错误有很多疑问,但我无法理解为什么Logcat上的所有字段都填写正确,但即使如此,还是出现了故障 以下是表格的创建过程: public void onCreate(SQLiteDatabase db) { String ddl = "CREATE TABLE Politician (id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE , idpolitician INTEGER NOT NULL, name TEXT NOT NU

我知道您对这个错误有很多疑问,但我无法理解为什么Logcat上的所有字段都填写正确,但即使如此,还是出现了故障

以下是表格的创建过程:

public void onCreate(SQLiteDatabase db) {
        String ddl = "CREATE TABLE Politician (id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE , idpolitician INTEGER NOT NULL, name TEXT NOT NULL, picture TEXT , position TEXT NOT NULL, country TEXT NOT NULL, state TEXT NOT NULL, city TEXT NOT NULL);";

        db.execSQL(ddl);

    }
这就是我试图拯救的地方

public void savePolitician(Politician politician) {

        ContentValues values = new ContentValues();
        values.put("idpolitician", politician.getId());
        values.put("name", politician.getName());
        values.put("picture", politician.getPictureFilename());
        values.put("position", politician.getPosition());
        values.put("country", politician.getCountry());
        values.put("state", politician.getState());
        values.put("city", politician.getCity());

        mDatabase.insert("Politician", null, values);

    }
下面是日志:

01-08 04:03:31.149  32633-32633/? E/Database﹕ [SQLiteDatabase.java:1428:insert()] Error inserting 

state=SP position=governador picture=example idpolitician=1 city=Sao Paulo country=Brasil name=Alckmin

    android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
            at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
            at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
            at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1582)
            at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
            at com.politify.dao.DbManegament.savePolitician(DbManegament.java:44)

如您所见,所有字段都已填充。任何人都可以帮助并告诉我做错了什么

请尝试在您的创建表脚本中删除
自动增量唯一
这是您的错误
id INTEGER主键自动增量唯一


将任何列定义为主键时,不需要将其指定为唯一。默认情况下,主键是唯一的。

是否输入了任何重复的值?请卸载并重新安装,以便删除所有可能的旧数据库,并再次调用您的
onCreate()
。认为有一个数据库文件具有不同约束的模式的旧版本。是的,我尝试添加3个不同的项。他们有相同的州和国家,但不同的政治人物、名字和图片的价值观。但这是我从第一项中得到的错误。桌子上还没有政治家。@MárcioPaiva看起来你的主键已经存在了。删除旧的数据库,并有一个新的。我是一个乞丐非常抱歉,如果它似乎愚蠢。当我在智能手机上运行它时,它会自动删除旧版本并创建一个新版本?我已经尝试过id INTEGER主键自动递增和id INTEGER主键。这些都不行。我仍然会犯同样的错误。我从一个教程代码中得到了这个定义,它在ADT中工作,但在Android Studio中不工作。你能给我们提供这个教程的链接吗?它来自一个私人课程。事实上,他们说只放id INTEGER主键,但当我这样做时,我从重复的id中得到了一个错误。所以我把AUTOINCREMENT设置为UNIQUE并使用它。但是我试过你说的,我还是犯了同样的错误。好的,没问题。我仔细检查了您的查询,它是find,我认为在插入记录时一个或多个字段的值为空。@MárcioPaiva uninstall and reinstall app。问题可能是您的主键已经存在,因此出现异常