Я использую PreparedStatement
в своем коде для создания запросов. Например:Как использовать PreparedStatement как подзапрос в другом подготовленном сообщении
PreparedStatement stmt = db.con.prepareStatement("select id from nodes where x>? and x<? and y>? and y<?");
stmt.setDouble(1, x1);
... //set a value for each param 1 thru 4
И теперь у меня есть другой запрос, который хочет использовать тот же самый запрос, что и в качестве подзапроса. Так что я мог бы сделать:
PreparedStatement stmt2 = db.con.prepareStatement("select id from edges where startNodeId in
(select id from nodes where x>? and x<? and y>? and y<?)");
Но это повторяющиеся и я, вероятно, изменить первую PreparedStatement
и хотите, чтобы эти изменения распространяются на второй. Есть ли способ установить подготовленный оператор как подзапрос в другом выражении?
Возможно, что-то похожее на stmt2.setPreparedStatement(2, stmt)
?
No can. Но ничто не мешает вам повторно использовать строчную константу с текстом запроса. Вы можете даже написать вспомогательный метод для установки 4 параметров. – Andreas
Как @Andreas говорит, и, возможно, использовать именованные параметры для ясности, чтобы вы могли ссылаться на них правильно? –
@KoosGadellaa 'PreparedStatement' не поддерживает именованные параметры, только позиционные. – Andreas