无法在SQLite中插入,错误代码:19

当我试图运行以下:

ContentValues cv = new ContentValues(); cv.put(table_LocalSettings_Unit, input); mDb.insert(table_LocalSettings, "", cv); 

我得到了以下错误:

插入单元= 0时出错;
SqliteConstraintException:错误代码19约束失败。

应该是什么问题? 表sql代码是:

  "create table if not exists " + table_LocalSettings + "( " + table_LocalSettings_ID + " INTEGER PRIMARY KEY NOT NULL , " + table_LocalSettings_MapType + " INTEGER NOT NULL , " + table_LocalSettings_Visib + " BIT NOT NULL , " + table_LocalSettings_Unit + " INTEGER DEFAULT 0 NOT NULL , " + table_LocalSettings_SpeedUnit + " INTEGER NOT NULL , " + table_LocalSettings_Alert + " BIT NOT NULL ," + table_LocalSettings_UserID + " INTEGER DEFAULT -1 , " + table_LocalSettings_Username + " VARCHAR , " + table_LocalSettings_PowerSave + " VARCHAR , " + table_LocalSettings_PremiumUser + " INTEGER NOT NULL DEFAULT 0);"; 

Solutions Collecting From Web of "无法在SQLite中插入,错误代码:19"

约束失败

听起来像你的主键已经存在于表中

我遇到了同样的问题,Pentium 10的回答让我朝着正确的方向前进。 validation波纹pipe代码是错误的,然后纠正它,我清除模拟器中的应用程序的数据,它重新创build了数据库,它现在工作正常。

  "create table if not exists " + DATABASE_TABLE + " (" + _ID + " integer primary key autoincrement," + " ItemName text not null, ItemID text not null, Image text not null, ImageDate text not null);"; 

我认为我的一个问题是我有一个额外的专栏。 我之前删除了一列,并没有从上面的行中删除它。

主要的是tripple检查错误和拼写的代码,如果使用模拟器清除数据。

您可以在这里看到所有SQLite错误代码的列表: http://www.sqlite.org/c3ref/c_abort.html 。 错误代码19意味着在操作(插入等)期间违反了表约束(NOT NULL,UNIQUE等)。 从查看您的表创build逻辑,您的许多字段设置为NOT NULL,但您只是试图插入一个列。 如果创build表的值不能为null,那么在INSERT过程中必须包含一个非空值,否则将会看到错误代码19.如果不需要,也可以从数据库表中删除约束。

作为一个方面的说明,还有其他的插入方法,允许处理违反约束,如

 db.insertWithOnConflict(..., ..., ..., INTEGER); 

INTEGER是SQLiteDatabase类中的静态冲突解决variables之一(但我不认为它们中的任何一个都允许NOT NULL冲突)。 您还可以在这里阅读更多关于SQLite冲突解决scheme的信息: http : //www.sqlite.org/conflict.html

你可以从表中删除not null ,它会正常工作。 喜欢这个:
对:

 String callTable = "CREATE TABLE IF NOT EXISTS '%s'" + "(userid VARCHAR, callwith VARCHAR, calltype VARCHAR, callstart time, callend time, callmedia VARCHAR" + ");" 

错误:

 String callTable = "CREATE TABLE IF NOT EXISTS '%s'" + "(userid VARCHAR not Null , callwith VARCHAR not null, calltype VARCHAR, callstart time, callend time, callmedia VARCHAR" + ");"