java: использование метода executeQuery (string) не поддерживается?
Я выполняю простое выполнение запроса на предварительный запрос и его вывод этой ошибки: java.sql.SQLException: использование метода executeQuery (string) не поддерживается в этом типе инструкции в net.sourceforge.jtds.jdbc.JtdsPreparedStatement.notSupported (JtdsPreparedStatement.java:197) в файле net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery (JtdsPreparedStatement.java:822) на testconn.itemcheck (testconn.java:58)
Любые идеи, что я делаю неправильно? спасибо заранее, вот код:
private static int itemcheck (String itemid ) { String query; int count = 0; try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); con = java.sql.DriverManager.getConnection(getConnectionUrl2()); con.setAutoCommit(false); query = "select count(*) as itemcount from timitem where itemid like ?"; //PreparedStatement pstmt = con.prepareStatement(query); //pstmt.executeUpdate(); PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1,itemid); java.sql.ResultSet rs = pstmt.executeQuery(); while (rs.next()) { count = rs.getInt(1); System.out.println(count); } //end while }catch(Exception e){ e.printStackTrace(); } return (count); } //end itemcheck
- (UPDLOCK, ROWLOCK) блокирует всю таблицу даже жестко выбирается только 1 строка
- подключение к механизму базы данных в Microsoft SQL Server 2005
- Пользовательский UUID как первичный ключ
- classNotFoundException в загрузке драйвера JDBC
- переносимое приложение java, которое обращается к mysql для кода, использующего SQL Server
- как изменить значение конкретного столбца на каскаде
- SQLException во время executeBatch (), когда я обрабатываю BatchUpdateException
- Как поддерживать поддержку SqlServer's «..» в HyperSQL?
- Как поймать Hibernate SQL ИСКЛЮЧЕНИЯ В ВЕСНАХ
- JpeRepository Супертип Подтип не работает с save ()
- Лучшая база данных для приложений на C ++ и Java
- SimpleJdbcCall: получить результат вызова хранимой процедуры Microsoft / Sybase
- Почему ORDER BY DATEDIFF вызывает исключение на сервере SQL с использованием JPA?
Несколько вещей стоит проверить:
- Используйте другой псевдоним. Использование COUNT в качестве псевдонима будет задавать проблемы.
- Объект запроса не должен передаваться дважды, один раз во время подготовки инструкции, а затем во время выполнения. Использование его в
con.prepareStatement(query);
т.е. подготовка инструкций, достаточно.
ДОПОЛНЕНИЕ
Сомнительно, что jTDS поддерживает использование метода String arg для PreparedStatement. Обоснование заключается в том, что PreparedStatement.executeQuery (), по-видимому, реализован, тогда как Statement.executeQuery (String), похоже, был переопределен в PreparedStatement.executeQuery (), чтобы выбросить указанное исключение.
Так…
PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1,itemid); java.sql.ResultSet rs = pstmt.executeQuery(query);
В отличие от Statement
, с PreparedStatement
вы передаете запрос sql при его создании (через объект Connection
). Вы делаете это, но затем вы также передаете его снова, когда вы вызываете executeQuery(query)
.
Используйте переменную no-arg для executeQuery (), определенную для PreparedStatement.
Так…
PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1,itemid); java.sql.ResultSet rs = pstmt.executeQuery();