我在几个网站上查找了任何有用的文档,但都是空的。官方网站上的流程图可能是希腊语的,我在这个网站上其他相关帖子中尝试的例子让我犯了错误。我正在编写一个简单的应用程序,将用户输入放置在数据库中,但我需要两列的组合才是唯一的。据我所见,这可以用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。。。
其中抛出:错误/SQLiteOpenHelper(1037):android.database.sqlite.SQLiteException:接近";":语法错误:CREATE TABLE inventory(category TEXT、itemNum TEXT、quantity INTEGER、price REAL、image INTEGER,CONSTRAINT unq UNIQUE(categories,itemNum)ON CONFLICT FAIL;
编辑:
使用用户输入填充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();
}
您的括号不匹配。在FAIL
之后应该有另一个)
。
一旦对其进行了排序,就可以捕捉到违反约束时发生的异常。
try {
// insert new data
} catch (SQLiteConstraintException e) {
Toast.makeText(context,
"The combination of A and B must be unique",
Toast.LENGTH_LONG).show();
}