在使用JDBC时,我遇到了一个问题,我在mysql中创建了一个表,其中包含员工信息Employee_Id,Name,City,Salary和Year_of_joining,我还创建了一个存储过程到同一个数据库,该数据库需要两个输入并更新员工的工资以加入年份为基础。这是存储过程:
CREATE PROCEDURE proc(IN var1, IN var2)
BEGIN
UPDATE "TABLE" SET Salary=var1+Salary WHERE Year_of_Joining= var2
END
现在我创建了一个通过java到mysql数据库的数据库连接(该连接正在成功建立)
但是现在,当我在创建CallableStatement对象后执行查询并尝试将可调用对象的当前结果转换为Result set时,我得到null。请帮我解决一下这个。 这是代码:
// Creates connection with java:
Connection con= DriverManager.getConnection(url,username,pswrd);
// Now Calling the Stored procedure from mysql
CallableStatement col = con.prepareCall("{call proc(?,?)}");
// gave values to the procedure
col.setDouble(1,20000);
col.setInt(2,2012);
col.execute();
// Returning Result set=null
ResultSet rs = col.getResultSet();
答案 0 :(得分:2)
- 首先,您尚未在存储过程中设置输出参数。
醇>喜欢:
CREATE PROCEDURE proc(IN inputParam VARCHAR(255), OUT OutParam INT)...
然后,检索输出参数的值(参数 在创建存储过程时指定为OUT或INOUT,JDBC 要求在语句执行之前使用 CallableStatement中的各种registerOutputParameter()方法 接口
col.registerOutParameter("OutParam", Types.INTEGER);
- 其次,UPDATE语句不返回ResultSet!只有SELECT语句返回一个ResultSet才能进行操作。
醇>