2015-10-20 2 views
1

Я довольно новыми для SQLite базы данных, поэтому, пожалуйста, простите меня ...Обновление целочисленных значений в базе данных SQLite (Java)

У меня есть база данных с целыми значениями. При обновлении строки в базе данных с помощью приведенного ниже кода есть некоторая проблема, которую я не понимаю. гдеArgs имеет тип String [], хотя значения, которые вы ищете, являются целыми числами, поэтому я ожидаю, что вы должны пройти в int [].

SQ.update(table, values, whereClause, whereArgs) 

Где я могу пойти не так?

Пример кода (гипотетический):

public void changeOneIntoTwo(DatabaseOperations dop) { 
    SQLiteDatabase SQ = dop.getWritableDatabase(); 
    String selection = "ValuesColumn = ?"; 
    String[] args = {"1"}; 
    ContentValues cv = new ContentValues(); 
    cv.put("ValuesColumn", 2); 
    SQ.update("MyTable", cv, selection, args); 
} 
+1

Похоже, что он не поддерживает ints как параметризованные аргументы. Это должно быть безопасно только для того, чтобы сделать 'selection =" ValuesColumn = "+ Integer.toString (myNumber);' – javanut13

+1

Просто передать массив строк, sqlite будет «знать», если это int. http://stackoverflow.com/questions/17481981/using-int-value-in-selection-args-argument-of-sqlite-for-android –

+1

в sql, строка 1 и int 1 оба правильно представлены как '1 «'. Поэтому не стоит беспокоиться о том, что движок sql будет знать, какого типа ожидать для какого столбца. – njzk2

ответ

-1

выбор является условием, что вы поместили в раздел, где Sql запроса и арг что заменяется «?» выбора.

например: позволяет предположить, что вам нужен ваш запрос sql * из Mytable, где ValuesColumn = '1' и Name = 'MVB'. поэтому в этом случае

Выбор строки = "ЗначенияColumn =? AND Name =?";

String [] args = {"1", "MVB"};

+0

Это я понял, но спасибо. – MWB

Смежные вопросы