2013-05-21 59 views
0

我想從我的數據庫中找到項目列表,但它引發異常。我的代碼和錯誤如下,所有字段類型都是正確的。代碼拋出SEVERE:沒有指定值的參數1除外

代碼

 System.out.println("2"); 
     try { 
      ps = con.prepareStatement("SELECT * from Users Where name = ?);" 

     ResultSet r = ps.executeQuery(); 
     ps.setString(1, "jack"); 
     ResultSet result = ps.executeQuery(); 
     .... 
     } catch (SQLException e) { 
      System.err.println(e.getMessage()); 
      System.out.println(e.getStackTrace()); 
     } 

輸出

INFO: 2 
SEVERE: No value specified for parameter 1 
INFO: [Ljava.lang.StackTraceElement;@6520c5b 
+1

本來很容易找到錯誤,只是看看異常提出的行! –

+0

@AlexandreLavoie不知道行在哪裏 – J888

+2

正如Luiggi回答的那樣,我很肯定在這一行上引發了異常:ResultSet r = ps.executeQuery(); –

回答

2

你打電話ResultSet r = ps.executeQuery();PreparedStatement設置參數之前。在編寫此方法時可能是錯字,因爲您在PreparedStatement上設置參數時有類似的行。

ps = con.prepareStatement(...); 
//comment this line 
// ResultSet r = ps.executeQuery(); 
ps.setString(1, "1"); 
//... 
ResultSet result = ps.executeQuery(); 

不能直接與你的問題相關的,如果你使用一個記錄器,而不是在你的代碼平原System.out.println調用它會更好。它將通過向日志提供更好的消息來幫助您維護代碼。

+0

請你給我一個記錄器 – J888

+0

@JackRamzi的例子,它不在問題範圍之內。另外,不要只使用任何記錄器,而要檢查應用程序服務器中使用的記錄器實現(因爲問題首先被標記爲Java EE),並在該應用服務器論壇中查看如何在應用中使用記錄器。 –

相關問題