Получение нулевого значения из базы данных Sqlite в android

99
12

Ребята, я сохранил нулевое значение в столбце базы данных sqlite


значение, которое сохраняется, составляет return "null"


Теперь, используя следующий код для его получения


int i = resultSet.getInt(resultSet.getColumnIndex(columnName));
String str = resultSet.getString(resultSet.getColumnIndex(columnName));
boolean bool = resultSet.isNull(resultSet.getColumnIndex(columnName));

if( str == null ) {
return -1;
}
return i;


Отладчик показывает значение str = "null"


но это условие не работает с str == null , str == "" , str == "null"


любой может дать мне хит того, что делать.


Также resultset.isNull дает мне значение false.


Итак, как я могу хранить null в базе данных, во-вторых, если я использую "null", то как я могу заставить это условие работать.

спросил(а) 2021-01-28T02:41:38+03:00 4 месяца, 3 недели назад
1
Решение
124

Если вы сохранили в базе данных "нулевую" литералную строку, вы сравниваете ее так:


if ( "null".equals(str) )

Чтобы сохранить нулевое значение в таблице базы данных, вы используете PreparedStatement.setNull()

ответил(а) 2021-01-28T02:41:38+03:00 4 месяца, 3 недели назад
44

Также resultet.isNull дает мне значение false.



resultset.isNull даст true, если ваше value = null. Но, как вы сказали, ваше value = "null" , которое является строкой.


Отладчик показывает значение str = "null"

но это условие не работает с str == null, str == "", str == "null"



попробуйте сравнить с str.equals( "null" )

mDb.execSQL(updateQuery, valVars); ИСПОЛЬЗОВАНИЕ этого и null как один из аргументов, хранящихся в valVar, но он дает ошибку исключения нулевого указателя



Как указано на http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html, этот метод должен использоваться для - Выполнить один оператор SQL, который НЕ является SELECT/INSERT/UPDATE/DELETE.


Попробуйте использовать update (String table, ContentValues ​​values, String whereClause, String [] whereArgs) или updateWithOnConflict (String table, ContentValues ​​значения, String whereClause, String [] whereArgs, int conflictAlgorithm). Также, пожалуйста, перекрестите, убедитесь, что ваше поле в db разрешает NULL (то есть Not Null = 0)


надеюсь, что это поможет:)

ответил(а) 2021-01-28T02:41:38+03:00 4 месяца, 3 недели назад
-5

Проверьте строку String length.ike,


if (str.length == 0) {
}

ответил(а) 2021-01-28T02:41:38+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема