Моя проблема, по поводу подготовленных заявлений в Java:Java подготовлен как заявление с целым числом
SELECT TrackingId FROM table where TrackingId = 5735053
TrackingId представляет собой целое число столбцов в базе данных. Whe i меняет запрос на:
SELECT TrackingId FROM table where TrackingId = '5735053'
он отлично работает, так как он автоматически преобразует его. То же самое касается этого запроса:
SELECT TrackingId FROM table where TrackingId LIKE '%5735%'
Это прекрасно работает, и база данных находят результаты. В java я хочу передать входное значение пользователя в запрос. Он работает с String, и тому подобным заявлением, но не с междунарами:
String query = "SELECT AnyString FROM table where AnyString like ?";
connectDatabase();
pstmt = connection.prepareStatement(query);
pstmt.setString(1, "%"+input+"%");
result = pstmt.executeQuery();
Теперь я хочу, чтобы пройти через Integer этого заявление, и я попробовал много вещей, но всегда 0 результатов. Так что это не сработает:
String query = "SELECT AnyInt FROM table where AnyInt like ?";
connectDatabase();
pstmt = connection.prepareStatement(query);
pstmt.setString(1, "%"+input+"%");
result = pstmt.executeQuery();
Но если я нахожу запрос в своей базе данных, программа отлично работает, и он находит результаты. Может ли кто-нибудь помочь мне с этим здесь?
Вы отлаживали, чтобы узнать, что такое значение 'input'? Это кажется мне правильным. –
Вы можете попробовать применить любое поле к varchar: 'cast (AnyInt as varchar)' или параметр: 'cast (? As varchar)'. Я не уверен, что 100% значение параметра поддерживается SQL Server. –
Благодарим вас за ответ. Ваш ответ правильный. Но я нашел ошибку в своем java-коде, и он работает и без приведения. –