2013-03-04 1 views
1

Я хочу обобщать метод преобразования обычного запроса SQL для параметрической SQL в JavaПреобразование простой SQL в параметриче SQL в Java

У меня есть ниже метод, который был использован в проекте. У этого много ссылок.

public Object executeQuery(String aQuery) { 
    Connection con = null; 
    Statement stmt = null; 
    ResultSet r = null; 
    try { 

     con = getConnection() ; 
     stmt = con.createStatement(); 
     r = stmt.executeQuery(aQuery); 

     if (r.next()) { 
      //return extracted result; 
     } 

     return null; 
    } catch (SQLException e) { 
     throw new RuntimeException(
      "Cannot execute query " + aQuery + " : " + e.getMessage()); 
    } finally { 
     cleanup(r,stmt,con); 
    } 
    } 

    //========= 
    //calling above method 
    executeQuery("Update USER set user_id = 15 where user_name='test'); 

Я думал о преобразовании этого параметра в параметрический sql, используя подготовленный java-оператор. Тогда метод Invoke не изменится, но запрос как

 Update USER set user_id = 15 where user_name='test' 

будет использовать Java PreparedStatement и соответствующие параметры

 Update USER set user_id = ? where user_name=? 

Есть ли способ сделать это как с помощью Spring или другие рамки.

Заранее благодарен!

+0

Ваш вопрос непонятен. Вы хотите изменить метод так, чтобы он выполнял запрос с помощью подготовленного оператора БЕЗ изменения вызовов методов? – 2013-03-04 08:16:12

ответ

2

Тогда метод Invoke не изменится

Вы должны абсолютно изменить методы призывающих. Я бы сильно отказать вам в попытке сделать это вручную. Если вызывающий абонент не смог правильно скрыть свои значения, у вас уже есть сломанный SQL - попытка исправить это, чтобы исправить SQL с параметрами будет боль.

Я предлагаю вам перегрузить метод и постепенно перемещать вызывающих абонентов от разбитого метода к рабочему. (Разумеется, устаревают сломанные.)

Я понимаю, что может быть много звонящих, и, следовательно, много работы - но это только результат того, что он так долго не был сломан. Теперь займите основную проблему, вместо того, чтобы просто наклеить на нее липкую штукатурку.

+0

+1 для молчания, чтобы я понял использование «устарело». – 2013-03-04 07:49:41

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