2013-03-21 3 views
0

Хорошо известно, что, как установить значение поля нуль с помощью простого запроса, как -Обновление значения поля таблицы обнулить программно

UPDATE your_table 
SET your_column = NULL 
WHERE id = 1; 

Но программно, какой из них правильный способ обновить поле значение в нуль -

db.execSQL("UPDATE your_table SET your_column='" + null + "WHERE id='" + myid + "'"); 

ИЛИ

db.execSQL("UPDATE your_table SET your_column= NULL WHERE id='" + myid + "'"); 

Благодаря

+1

Является ли ваш запрос уязвимым для SQL-инъекции? – Patashu

+0

есть. Так что лучший способ? –

ответ

3

Я бы поехал с PreparedStatement.

String query="UPDATE your_table SET your_column= ? WHERE id=?"); 
PreparedStatement stmnt = conn.prepareStatement(query); 
if(colyouAretryingtopass == null){] 
    stmnt.setNull(1, Types.VARCHAR); 
} 
+1

ах, это то, что я хотел. спасибо :) –

+0

Еще один вопрос - в вашем состоянии 'if' вы использовали' colyouAretryingtopass'. Разве это не означает, что 'your_column' должен быть проверен для null и return, если он уже null? –

+0

yepp, его значение, которое вы пытаетесь передать в свою колонку из java. 'colyouAretryingtopass == youColumnValue' :) – PermGenError

2

Правильный способ использования переменных привязки, в зависимости от используемой структуры, выполняется по-разному.

Ваш запрос должен быть чем-то вроде следующего;

String query = "UPDATE your_table SET your_column = null WHERE id = ?"; 
executeQuery(query, id); 

Где executeQuery(String query, Object... args) является метод доступа к БД по вашему выбору.

Если вы не используете переменные связывания;

a) Впрыск для инъекций SQL.
b) Потеря производительности за счет использования кеша запросов в базе данных.

+0

Хорошая идея использовать отдельный общий метод при каждом выполнении запроса. Благодаря! –

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