我有下表,其中包含标签名称和每个标签的标识符:
public static final String TABLE_CREATE_TAGS =
"CREATE TABLE " + TABLE_TAGS + " (" +
COLUMN_TAG_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "+
COLUMN_TAG_NAME + " TEXT UNIQUE "+
")";
我只想插入不在base de datos
. 这就是为什么如果我-1
在insert
取货时收到一个id
标签上的那个。
该应用程序没有挂起,一切正常,但log
我收到一个错误。
我按如下方式插入:
ContentValues values = new ContentValues();
values.put(DatabaseHelper.COLUMN_TAG_NAME, tag);
// insert row
long id = database.insert(DatabaseHelper.TABLE_TAGS, null, values);
if(id == -1){ // El tag ya existe. Tenemos que pillar su verdadero id
id = getTagId(tag);
}
错误:
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: tags.name (code 2067)
您已将名称字段定义为唯一,即使您更改了 Id 字段的值,如果您不修改名称,如果您插入两次它会继续报错。
执行插入的正确方法是首先检查它是否存在。
方法
existTag
: