Я использую временные таблицы внутри своего кода для [некоторой долгой последовательности причин здесь] в SQL Server, Java.Я выполнял свои sql запросы с использованием объекта Stament в Java.Однако недавно я решил использовать PreparedStatement, чтобы избежать внедрения.
Моя проблема заключается в том, что когда я создаю временную таблицу с использованием PreparedStatement, я не могу снова получить ее с тем же подготовленным оператором.Вот простая иллюстрация:
sql = "select * into #someTable from (select someColumns from someOtherTable where smth = ? and smth2 = ?)"
PreparedStatement preparedStatement = conn.prepareStatement(sql);
for(int i=0; i<parameters.size(); i++){
preparedStatement.setString(i+1, parameters.get(i).toString());
}
this.rs = preparedStatement.executeQuery();
Пока здесь все в порядке.После получения ResultSet и выполнения каких-либо действий с ним или без получения resultSet только для preparedStatement.execute()
не имеет значения, я не могу снова достичь объекта #someTable.
sql = "select count(*) from #someTable"
preparedStatement = conn.prepareStatement(sql);
this.rs = preparedStatement.executeQuery();
Здесь this.rs = preparedStatement.executeQuery();
часть дает 'Invalid object name #someTable'
.Я делаю все вышеперечисленное с использованием только одного объекта Connection и без его закрытия или повторного открытия.Мне нужно снова использовать эту временную таблицу.Есть ли способ создать временную таблицу с объектом PreparedStatement в Java и повторно использовать эту временную таблицу снова и снова?С уважением,