親愛的計算器社區更換甲骨文的「OracleTypes.CURSOR」爲等效在MySQL
我想升級使用Oracle數據庫到MySQL數據庫在JAVA開發的系統。
我已經到了使用存儲過程的地步,java代碼使用特定的oracle結構 - OracleTypes.CURSOR
。請參閱下面的代碼。
private int getUserID(String username) {
int UserID = -1;
CallableStatement cs = null;
ResultSet rs = null;
try {
con = this.getConnection();
cs = con.prepareCall("{call getUserID(?,?)}");
cs.setString(1, username);
cs.registerOutParameter(2, OracleTypes.CURSOR);
cs.execute();
rs = (ResultSet) cs.getObject(2);
if (rs.next()) {
UserID = rs.getInt(1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
cs.close();
rs.close();
} catch (SQLException ex) {
Logger.getLogger(DBConnector.class.getName()).log(Level.SEVERE, null, ex);
}
closeConnection();
return UserID;
}
}
我所試圖做的是利用OracleTypes.CURSOR
轉換爲現在MySQL友好。 我的確讀過它可能會在新版本的mysql中做到這一點,所以我甚至試圖用java.sql.Types.INTEGER
代替OracleTypes.CURSOR
而沒有任何結果。
你能幫我嗎?
注:我這裏有以下的堆棧溢出以前的信息以及其他地方,如: http://bugs.mysql.com/bug.php?id=17898
參數'OracleTypes.CURSOR'表示過程有一個「ref cursor」作爲out參數。我不認爲MySQL支持類似的概念。 –
感謝您的評論。這也是我在尋找這個問題時最初的理解。但在我提供的鏈接上,我也獲得了現在支持的信息......不知何故。你對此有更多瞭解嗎? – pvt
問題不在於參數,它是遊標類型作爲參數。事實上,你已經嘗試用一個整數代替它,這表明你不明白光標是什麼。遊標本質上代表一個結果集,它可以讓你滾動瀏覽它。 – Laurence