Có lẽ đọc phần này có thể giúp bạn: Gọi thủ tục lưu trữ MySQL từ JDBC
Đây là nơi bạn sai:
mysqlquery = mysqldbconn.prepareCall(vstrSQLStatement);
Bạn không sử dụng 'callstoredprocedure' đã khai báo.
Đọc ví dụ bên dưới:
public static void getSkills(int candidateId) {
//
String query = "{ call get_candidate_skill(?) }";
ResultSet rs;
try (Connection conn = MySQLJDBCUtil.getConnection();
CallableStatement stmt = conn.prepareCall(query)) {
stmt.setInt(1, candidateId);
rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(String.format("%s - %s",
rs.getString("first_name") + " "
+ rs.getString("last_name"),
rs.getString("skill")));
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
Hãy để tôi giải thích:Truy vấn được xác định, tương tự như lệnh gọi của bạn chấp nhận 1 tham số không trả về giá trị. Sau đó, nó được sử dụng trong:conn.prepareCall (), sau đó tham số được đặt thành câu lệnh và sau đó nó được thực thi.
Như tôi đã đề cập, bạn nên làm điều này:
mysqlquery = mysqldbconn.prepareCall(callstoredprocedure);
Vui lòng cho tôi biết, nếu điều này khắc phục được sự cố của bạn.