@WebMethod(operationName = "SearchOR")
public SearchOR getSearchOR (@WebParam(name = "comp")
String comp, @WebParam(name = "name")
String name) {
//TODO write your implementation code here:
SearchOR ack = null;
try{
String simpleProc = "{ call getuser_info_or(?,?)}";
CallableStatement cs = con.prepareCall(simpleProc);
cs.setString(1, comp);
cs.setString(2, name);
**ResultSet rs = cs.executeQuery();**
while (rs.next()) {
ve.add(rs.getString(1));
ve.add(rs.getString(2));
}}catch ( Exception e) {
e.printStackTrace();
System.out.print(e);
}
return ack;
}
我在大胆的部分得到错误。它指向那个位置。我的查询是 这里:
DELIMITER $$
DROP PROCEDURE IF EXISTS
.`getuser_info_or
$$
#MySQL返回一个空结果集(即零行).`
CREATE PROCEDURE
.
getuser_info_or``
(
IN comp VARCHAR(100),
IN name VARCHAR(100),
OUT Login VARCHAR(100),
OUT email VARCHAR(100)
)
BEGIN
SELECT sLogin, sEmail
INTO Login, email
FROM ad_user
WHERE company = comp OR sName=name;
END $$
# MySQL returned an empty result set (i.e. zero rows).
DELIMITER ;
答案 0 :(得分:3)
我相信你的问题是你的调用与方法定义不匹配。在您的定义中,您有两个参数:IN comp,IN名称, OUT登录,OUT电子邮件。所以你的电话应该是:
String simpleProc = "{ call getuser_info_or(?, ?, ?, ?)}";
来自javadocs:
如果使用,则结果参数必须为 注册为OUT参数。
所以你需要添加这些注册:
cs.registerOutParameter(3, Types.VARCHAR);
cs.registerOutParameter(4, Types.VARCHAR);
定义的存储过程不会为检索到的数据创建结果集,而是将其放在out参数中。要获取它们,您需要通过可调用语句访问它们:
String login = cs.getString(3);
String email = cs.getString(4);