2012-03-29 99 views
3

我已经浏览了几个网站的任何有用的文档,并已空出来。来自官方网站的流程图也可能是希腊语,我从本网站上其他相关帖子尝试的例子也给我带来了错误。我正在编写一个简单的应用程序来将用户输入放到数据库中,但是我需要一个两列的组合,以便是唯一的。从我所看到的,这可以通过UNIQUE或PRIMARY KEY来完成。 我还需要一些方法来捕获错误,敬酒用户输入错误。我知道我可以很容易地在Java方面做到这一点,但我不希望循环遍历每个建议插入的表。SQLite创建表与列的唯一组合

这是我到目前为止有:

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:邻近 “;”:语法错误:CREATE TABLE库存(类TEXT,itemNum TEXT,数量INTEGER,价格REAL,图像INTEGER,约束unq UNIQUE(类别,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();    
} 

回答

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(); 
} 
+0

Facepalm!我现在回到我的程序员卡,悄悄地退到角落里。 – AnthonyW 2012-03-29 14:36:56

+0

关于第二个问题的任何想法?我还需要一些捕获错误的方法来向用户表示他们的输入有故障 – AnthonyW 2012-03-29 14:37:37

+0

当然,添加到我的答案。 – 2012-03-29 14:38:38