The method registerOutParameter(String, int) is undefined for the type PreparedStatement

时间:2022-05-15 20:59:48
jsp语句如下:
sSQL="call  (PTofm_QueryDetail  ?,?,?,?,?)";
cstmt = conn.prepareStatement(sSQL);
cstmt.setString(1, sPage);
cstmt.setInt(2, nPageSize);
cstmt.setString(3, sTable);
cstmt.setString(4, sCondition);
//cstmt.setString(5, "");
cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR);
rs = cstmt.executeQuery();
执行时报错:

Generated servlet error:
The method registerOutParameter(String, int) is undefined for the type PreparedStatement

如果将
cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR);
换成
cstmt.setString(5, "");
则执行可以通过。


5 个解决方案

#1


应该是CallableStatement,执行存储过程不是用PreparedStatement 
conn.prepareCall(sql);

#2


conn.prepareCall(sql);还是一样   
去掉cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR);    
换成cstmt.setString(5, ""); 
是可以编译运行

谢谢回复

#3


楼主可以试下

pstmt.executeUpdate();

还有就是像这样
最好是

con.setAutoCommit(false);//不设置自动提交
sSQL="call  (PTofm_QueryDetail  ?,?,?,?,?)"; 
cstmt = conn.prepareStatement(sSQL); 
cstmt.setString(1, sPage); 
cstmt.setInt(2, nPageSize); 
cstmt.setString(3, sTable); 
cstmt.setString(4, sCondition); 
//cstmt.setString(5, ""); 
cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR); 
pstmt.executeUpdate();
con.commit();//手动提交
System.out.println("提交成功");
con.setAutoCommit(true);//设回来.

#4


帮你顶一个~

#5


cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR); 在这不能用这个吧??

#1


应该是CallableStatement,执行存储过程不是用PreparedStatement 
conn.prepareCall(sql);

#2


conn.prepareCall(sql);还是一样   
去掉cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR);    
换成cstmt.setString(5, ""); 
是可以编译运行

谢谢回复

#3


楼主可以试下

pstmt.executeUpdate();

还有就是像这样
最好是

con.setAutoCommit(false);//不设置自动提交
sSQL="call  (PTofm_QueryDetail  ?,?,?,?,?)"; 
cstmt = conn.prepareStatement(sSQL); 
cstmt.setString(1, sPage); 
cstmt.setInt(2, nPageSize); 
cstmt.setString(3, sTable); 
cstmt.setString(4, sCondition); 
//cstmt.setString(5, ""); 
cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR); 
pstmt.executeUpdate();
con.commit();//手动提交
System.out.println("提交成功");
con.setAutoCommit(true);//设回来.

#4


帮你顶一个~

#5


cstmt.registerOutParameter("sPageInfo",java.sql.Types.VARCHAR); 在这不能用这个吧??