SQLite创建具有UNIQUE列组合的表



我在几个网站上查找了任何有用的文档,但都是空的。官方网站上的流程图可能是希腊语的,我在这个网站上其他相关帖子中尝试的例子让我犯了错误。我正在编写一个简单的应用程序,将用户输入放置在数据库中,但我需要两列的组合才是唯一的。据我所见,这可以用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();
}

最新更新