0
我的問題,有關準備語句在java中:java編寫類似語句的整數
SELECT TrackingId FROM table where TrackingId = 5735053
TrackingId是數據庫中的一個整數列。我改變查詢:
SELECT TrackingId FROM table where TrackingId = '5735053'
它工作正常,因爲他將其自動轉換它。此查詢同樣如下:
SELECT TrackingId FROM table where TrackingId LIKE '%5735%'
這工作正常,數據庫正在查找結果。在Java中,我想將用戶的輸入值傳遞給查詢。它的工作原理與字符串和類似聲明,但不與詮釋:
String query = "SELECT AnyString FROM table where AnyString like ?";
connectDatabase();
pstmt = connection.prepareStatement(query);
pstmt.setString(1, "%"+input+"%");
result = pstmt.executeQuery();
現在我想通過這個聲明整數關口,我已經嘗試了許多事情,但始終爲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代碼中發現了一個錯誤,它在沒有投射的情況下也可以工作。 –