私は、ユーザが定義したEditTextによって満たされているデータベースを持っています。空のフィールドを許可する編集テキストはありません。私は、これを2つの単純なif文で確認できます:if myEditText.getText().toString().equals("") // display error
。しかし、私はこの機会を使用して、私のSQLiteをブラッシュアップし、エラーを捕まえることができます(私のaddメソッドで実証されているように)。 以下の表の列をNOT NULL
に変更し、ユーザーが空のフィールドを追加/更新しようとするとエラーを生成/キャッチする方法を教えてください。SQLiteのNULLカラムではなくエラーキャッチ
私のデータベーステーブル:
db.execSQL("CREATE TABLE inventory (category TEXT, itemNum TEXT, quantity INTEGER, price REAL, image INTEGER, UNIQUE(category, itemNum) ON CONFLICT FAIL);");
マイaddメソッド:
... ContentValues values
try{
db.getWritableDatabase().insertWithOnConflict(DatabaseHelper.TABLE_NAME, DatabaseHelper.CATEGORY, values, SQLiteDatabase.CONFLICT_FAIL);
fillItemNumbers();
}
catch(SQLiteConstraintException e)
{
Toast
.makeText(MyActivity.this, etItemNum.getText().toString() + " already exists in " + catSpinner.getSelectedItem().toString() +". Consider using Update.",Toast.LENGTH_LONG)
.show();
}
マイ更新方法埋める:
を...埋めますContentValues values
String[] args = {catSpinner.getSelectedItem().toString(), etItemNum.getText().toString()};
int rowsAffected = db.getWritableDatabase().update(DatabaseHelper.TABLE_NAME, values, DatabaseHelper.CATEGORY + "=? AND " + DatabaseHelper.ITEM_NUMBER + "=?" , args);
UPDATE: 私は少し掘りを行なったし、この思い付いた:
db.execSQL("CREATE TABLE inventory (category TEXT NOT NULL, itemNum TEXT NOT NULL, quantity INTEGER NOT NULL, price REAL NOT NULL, image INTEGER NOT NULL, UNIQUE(category, itemNum) ON CONFLICT FAIL);");
私が探しています何本か?もしそうなら、どうやってこれを私の利点に使うことができますか?
テーブルには何も入っていませんが、テスト行atmです。私はそれを吹き飛ばして問題なく再建することができます。この問題は、私が列にNOT NULLを実装する方法として完全に無知だということです。 – AnthonyW
上記アップデートに従ってください... – Mayank
優秀;私たちは同じページにいます – AnthonyW