我是新來的Java和掙扎了一下。爲什麼此過程在MYSQL中運行,而不是在Java中運行?
我已經成立了一個程序在mysql中返回員工詳細信息輸入姓氏時:
CREATE PROCEDURE getEmployeeByLastName(IN in_last_name VARCHAR(16))
SELECT emp_no, first_name, last_name, gender, hire_date FROM oop_employees
WHERE last_name = in_last_name;
當我執行它這個工程在phpMyAdmin。
在我的Java的主要方法我要求用戶輸入姓氏......
System.out.println("Please enter the last name of the employee.");
String last_name = keyboard.next();
Employee emp = getEmployeeByLastName(dbc.getConnection(), last_name);
System.out.println(emp);
getEmployeeByLastName
是:
public static Employee getEmployeeByLastName(Connection conn, String lname) {
Employee emp = null;
try {
String sql = "CALL getEmployeeByLastName(\""+ lname +"\")";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
while (rs.next())
emp = new Employee(rs.getInt("emp_no"), rs.getDate("birth_date"),rs.getString("first_name"),rs.getString("last_name"), rs.getString("gender"),rs.getDate("hire_date"));
rs.close();
st.close();
}
catch (SQLException e) {
e.printStackTrace();
}
return emp;
}
當我搜索一個姓,我得到幾個SQL異常錯誤,以及兩個錯誤在上面的代碼:
emp = new Employee(rs.getInt("emp_no"), rs.getDate("birth_date"),rs.getString("first_name"),rs.getString("last_name"), rs.getString("gender"),rs.getDate("hire_date"));
和..
Employee emp = getEmployeeByLastName(dbc.getConnection(), last_name);
我能夠創建其他程序,使用僱員類來顯示數據庫中的數據,這是我第一個需要用戶輸入的過程。
是否有一個明顯的原因,爲什麼這是在mysql中工作,但不是在eclipse中?所有幫助非常感謝,我發現這很難調試。請讓我知道是否需要更多信息。
編輯:
例外
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:862)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1076)
at com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2034)
什麼是例外?發佈最小堆棧跟蹤 – developer
在您的問題中包含例外 – Yousaf
'rs。getDate(「birth_date」)' - 我不知道這是否是唯一的錯誤,但是您的過程不會獲取該列。 – Eran