這個問題類似於:Mysql - Stored procedure OUT variable return null,可悲的是他們的解決方案並不適合我。存儲過程返回空
我有一個數據庫填充關於誰使用我的程序和什麼時候的數據,我試圖在MySql中創建一個存儲過程來檢索所有數據並將它發送到我的Java Servlet,它將在那裏處理。
這是我目前對我的存儲過程:
這是我如何調用Java中的查詢:
CallableStatement stmt = null;
ResultSet rs = null;
String sqlQuery = "{call getTableData (?, ?, ?, ?)}";
stmt = conn.prepareCall(sqlQuery);
stmt.registerOutParameter(1, java.sql.Types.VARCHAR);
stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
stmt.registerOutParameter(3, java.sql.Types.VARCHAR);
stmt.registerOutParameter(4, java.sql.Types.INTEGER);
stmt.execute();
當我嘗試調用Java中這個存儲過程(我試過使用結果集和普通的getString()等),所有的值都返回null。
我的表設計是沿着線:任何幫助將不勝感激
Request Time (millis), name, lastName, requestID
1402341252155, John, Doe, 11
。我覺得問題在於存儲過程本身,特別是我如何從表中選擇變量並將它們分配給「out」參數。
謝謝!
您是否嘗試過prepareQuery而不是prepareCall,只是將它作爲查詢執行,然後處理返回的ResultSet?我一直這樣做,它工作正常。 –
@Tim你應該使用'prepareCall'來執行存儲過程。 –
由於它們沒有參數,所以應該使用'stmt.getXxx(index)'來檢索數據,不要使用'ResultSet'。 –