我查看过几个网站上的任何有用的文档,并且已经空了。来自官方网站的流程图也可能是希腊语,我在本网站上的其他相关帖子中尝试的示例让我犯了错误。我正在编写一个简单的应用程序来将用户输入放在数据库中,但我需要 2列的组合才能是唯一的。从我所看到的,这可以用UNIQUE或PRIMARY KEY完成。 我还需要一些捕获错误的方法来向用户致敬,他们的输入有问题。我知道我可以在Java方面轻松地做到这一点,但我宁愿不在每个提议的插入上遍历表格。
这是我到目前为止所做的:
db.execSQL("CREATE TABLE inventory (category TEXT, itemNum TEXT, quantity INTEGER, price REAL, image INTEGER, UNIQUE(category, itemNum) ON CONFLICT FAIL;");
表格构造正确,直到我添加UNIQUE ...
扔了什么: ERROR / SQLiteOpenHelper(1037):android.database.sqlite.SQLiteException:near“;”:语法错误:CREATE TABLE库存(类别TEXT,itemNum TEXT,数量INTEGER,价格REAL,图像INTEGER,CONSTRAINT unq UNIQUE(category,itemNum)关于冲突失败;
编辑:
...使用用户输入填充 ContentValues值。
try{
db.getWritableDatabase().insert(DatabaseHelper.TABLE_NAME, DatabaseHelper.CATEGORY, values);
fillItemNumbers(); // Updates screen
}
catch(SQLiteConstraintException e)
{
Toast
.makeText(this, "User error",Toast.LENGTH_LONG)
.show();
}
答案 0 :(得分:2)
您的括号不匹配。 )
之后应该有另一个FAIL
。
一旦对其进行了排序,就可以捕获违反约束时发生的异常。
try {
// insert new data
} catch (SQLiteConstraintException e) {
Toast.makeText(context,
"The combination of A and B must be unique",
Toast.LENGTH_LONG).show();
}