2013-12-24 1 views
0

Я пишу одно приложение для поиска определенных полей в форме и отображения соответствующего запроса пользователю (пользователь может сохранить выполненный запрос и загрузить запрос позже). Я использую API для генерации запроса на основе выбранных полей. API возвращает сгенерированный запрос в следующем формате.Регулярное выражение для замены значения в параметре запроса в java

Сформирован запрос:

SELECT T0."id" AS "COL0" 
FROM student_table T0 
WHERE (((T0."student_name" = ?) 
      AND (T0."grade" = ?)) 
     AND (T0."student_no" LIKE ?)) 

Ожидаемый запрос:

SELECT T0."id" AS "COL0" 
FROM student_table T0 
WHERE (((T0."student_name" = 'John') 
      AND (T0."grade" = 'A')) 
     AND (T0."student_no" LIKE '12%')) 

Теперь я должен построить надлежащий запрос из выше запроса. Поскольку у меня есть значения полей в from, я хочу заменить «?» с соответствующими значениями.

Возможно ли заменить '?' с соответствующими значениями полей с использованием метода java string replaceAll? можем ли мы использовать концепцию обратных ссылок для замены вопросительных знаков соответствующими значениями? Если это невозможно с регулярным выражением, предложите лучший подход к решению проблемы.


Редактировать

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

Я фактически использую API моей платформы для конкретной компании, я добавляю столбцы критериев и запросов в определение запроса и возвращает выполненный запрос в вышеупомянутом формате. Пользователь должен иметь возможность сохранять ожидаемый запрос, я должен отображать как запрос, так и результат запроса в пользовательском интерфейсе.

+0

взглянуть на PreparedStatement. http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – Bowie

+1

wat api ur using и как –

+0

показать код построения запроса –

ответ

1

Попробуйте выполнить запрос следующим способом

String insertTableSQL = "SELECT T0.\"ID\" AS \"COL0\" FROM STUDENT_TABLE T0 WHERE (((T0.\"STUDENT_NAME\" = ? ) AND (T0.\"GRADE\" = ? )) AND (T0.\"STUDENT_NO\" LIKE ? ))";    
      PreparedStatement preparedStatement = dbConnection.prepareStatement(insertTableSQL); 

      preparedStatement.setString(1, "John"); 
      preparedStatement.setString(2, "A"); 
      preparedStatement.setString(3, "12%"); 
      preparedStatement.execute(); 
+0

Можете ли вы показать мне код строительного запроса –

+0

Как OP сказал, что он уже построил запрос. Он просто хочет знать, как выполнить этот запрос. Поэтому я предоставил его :) – Sach

+0

Думаю, ему нужно построить запрос со значениями. Поэтому, если мы увидим код сборки, мы можем предложить, как установить значения. –

1

Вы можете использовать PreparedStatement для выполнения таких запросов, которые содержат?

PreparedStatement ps = null; 
ResultSet rs = null; 

String sQuery = "SELECT T0."ID" AS "COL0" FROM STUDENT_TABLE T0 WHERE (((T0."STUDENT_NAME" = ?) AND (T0."GRADE" = ?)) AND (T0."STUDENT_NO" LIKE ?))"; 

ps = objConnection.prepareStatement(sQuery); 
ps.setString(1, valueOf_T0."STUDENT_NAME"); 
ps.setString(2, valueOf_T0."GRADE"); 
ps.setString(3, valueOf_T0."STUDENT_NO"); 
rs = ps.executeQuery(); 

Как имеет значение данных, и вы знаете тип полой базы данных, так что вы можете установить значение в инкубационных методах в соответствии с типом данными, как setInt(), setDouble() и т.д..

Подробнее о: http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

Благодаря

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

  • Нет связанных вопросов^_^