2015-11-05 70 views
0

我有一個很奇怪的問題。我設計了一個將值插入到postgresql表中的函數。但是當我嘗試從那個時候從java調用這個函數,它似乎沒有插入。即使我也沒有得到錯誤。我的代碼如下。來自java的postgresql函數調用

String query = "{call postgres.addToLog(?,?,?,?,?,?,?)}"; 

    try{ 

     CallableStatement ps = getPostgresConfiguratoin().prepareCall(query); 

     ps.setTimestamp(1, new Timestamp(new java.util.Date().getTime())); 
     ps.setInt(2, 705); 
     ps.setInt(3, 1); 
     ps.setInt(4, 1); 
     ps.setString(5, "192.168.2.101"); 
     ps.setString(6, null); 
     ps.setString(7, query); 
     ps.executeUpdate(); 
     ps.close(); 
    }catch(Exception ex){ 

    } 

我的電話有什麼問題嗎?

+1

缺少'commit()'也許? –

+0

但是,當我嘗試調試應用程序時,對象ps顯示我選擇查詢,然後調用,但函數只有inser查詢,然後爲什麼它試圖獲得選擇查詢?這是我注意到的一件更奇怪的事情。 –

+1

PG日誌文件說什麼?你應該在到達服務器時看到實際的'UPDATE'語句,或者至少是語句產生的任何錯誤。 – Patrick

回答

0

我在日誌中發現,我的函數插入查詢有一個錯誤拼寫的列名,所以我的插入查詢從不插入任何東西。在進一步的研究之後,我發現這也是將異常處理提供給PL-SQL的最佳實踐。我在我的PL-SQL塊中提供了異常處理程序,並且它返回了我在Java程序端可以看到的錯誤。