#android #database #validation
#Android #База данных #проверка
Вопрос:
Я написал приведенный ниже код для проверки значения в строке перед сохранением его в базе данных.
EditText editText2 = (EditText) this.findViewById(R.id.editText1);
setTime = editText2.getText().toString();
Log.d(setTime, "This is the setTime value");
if(setTime == null)
{
Toast.makeText(Settings.this, "Time cannot be NULL", Toast.LENGTH_LONG).show();
}
else if(setTime != null)
{
cv.put(DatabaseHelper.TIME, setTime);
db.insert("finalP", DatabaseHelper.TIME, cv);
db.close();
editText2.setText("");
Toast.makeText(Settings.this, "Time saved", Toast.LENGTH_LONG).show();
}
Но даже если «setTime» содержит нулевое значение, часть «if» пропускается, и элемент управления переходит непосредственно в часть «else» и сохраняет нулевое значение в базе данных.
Разве это не правильный способ проверки??
Ответ №1:
Я думаю, что ваша строка пуста, а не null. Поэтому добавьте проверку длины строки также в предложение if.
EditText editText2 = (EditText) this.findViewById(R.id.editText1);
setTime = editText2.getText().toString();
Log.d(setTime, "This is the setTime value");
if(setTime == null || setTime.length() == 0) {
Toast.makeText(Settings.this, "Time cannot be NULL", Toast.LENGTH_LONG).show();
} else {
cv.put(DatabaseHelper.TIME, setTime);
db.insert("finalP", DatabaseHelper.TIME, cv);
db.close();
editText2.setText("");
Toast.makeText(Settings.this, "Time saved", Toast.LENGTH_LONG).show();
}