2012-03-29 23 views
3

私はいくつかの有益なドキュメントを探し、空になっています。公式サイトからのフローチャートもギリシャ語かもしれませんし、このサイトの他の関連記事から私が試した例も私に間違いをもたらしました。私はユニークになるために2つの列のの組み合わせが必要ですが、私はデータベースにユーザー入力を配置するためのシンプルなアプリを書いています。私が見たことから、これはユニークキーまたはプライマリキーで実現できます。 私はまた、エラーをキャプチャする何らかの方法を必要とします。ユーザに入力が間違っていることを知らせる。私はJava側でこれを十分に簡単に行うことができることを知っていますが、提案されているすべてのインサートのテーブルをループしない方がよいでしょう。投げユニークな列の組み合わせを持つSQLite create table

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周辺 ";":構文エラー:CONFLICT FAIL表インベントリ(カテゴリTEXT、itemNumテキスト、数量INTEGER、価格REAL、画像INTEGER、CONSTRAINT UNQ UNIQUE(カテゴリ、itemNum)を作成し、

EDIT:

...入力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

+0

2番目の質問に対する考えはありますか?私はまた、エラーをキャプチャするいくつかの方法を必要とする彼らの入力が間違っていることをユーザーに乾杯 – AnthonyW

+0

確かに、私の答えに追加されます。 –