2015-11-09 5 views
-1

У меня есть строковый запрос, который я получаю во время выполнения из базы данных. В запросе у меня есть переменная, которой нужно присвоить значение во время выполнения.Присвоить значение переменной в строковом запросе во время выполнения

ex:

int id; Строковый запрос = выберите * из таблицы где var1 = id;

Теперь, когда я выполняю этот запрос, он не принимает значение id, а принимает его также как строку запроса.

В ios мы используем% @ вместо id и присваиваем значение во время выполнения. Есть ли альтернатива для Android?

Заранее спасибо.

+1

Строка запроса = «выберите * из таблицы, где var1 =»; Когда у вас есть значения в id, просто добавьте строку String tempQuery = query + id; – Triode

+0

@Triode Нет, плохо! Не используйте строковые манипуляции по SQL-запросам! Используйте параметры запроса! –

+0

Да, правда, я полностью согласен !!!! Возможно, это было бы более подходящим http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query(java.lang.String, java.lang.String [], java. lang.String, java.lang.String [], java.lang.String, java.lang.String, java.lang.String) – Triode

ответ

-1

простой запрос выбирает все из БД, где столбец ID и имя пользователя соответствует выбору

int id = 0; 
String name = "somename"; 
String table = "tablename"; 
String selection = "column_id = ? AND column_name = ?" 
String[] selectionArgs = new String[]{String.valueOf(id), name} 

Cursor c = yourDatabase.query(table, null, selection, selectionArgs, null, null, null, null) 
+0

'id' не является строкой. –

+0

yep, исправлено. –

+1

Это не работает, если 'column_id' не имеет числовой [сродство] (http://www.sqlite.org/datatype3.html#affinity). –

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