我有一個數據庫正在被用戶定義的EditTexts填充。編輯文本都不應該允許空字段。我知道我可以用幾個簡單的if語句來檢查這個:if myEditText.getText().toString().equals("") // display error
。不過,我會傾向於使用這個機會來刷新我的SQLite和錯誤捕獲(如我的add方法中所演示的)。 如何將下表中的列更改爲NOT NULL
,並在用戶嘗試使用空字段添加/更新時生成/捕獲錯誤?SQLite中的NOT NULL列和錯誤捕獲
我的數據庫表:
db.execSQL("CREATE TABLE inventory (category TEXT, itemNum TEXT, quantity INTEGER, price REAL, image INTEGER, UNIQUE(category, itemNum) ON CONFLICT FAIL);");
我的加入方法:
...填寫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);
更新: 我做了一個小挖和與此想出了:
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 2012-03-30 02:17:25
按照上面的更新... – Mayank 2012-03-30 02:20:37
優秀;我們在同一頁 – AnthonyW 2012-03-30 02:23:37