String sql = "{call ylp_UserVertify(?,?,?)}";
try{
CallableStatement cstmt = con.prepareCall(sql);
cstmt.setString(1, sjhm);
cstmt.setString(2, fwmm);
cstmt.registerOutParameter(3, Types.INTEGER); //返回码 cstmt.executeUpdate(); if (cstmt.getInt(3)!=0){
cstmt.close();
ErrText = "用户鉴权确认失败!";
return false;
}else{
SystemLog log=new SystemLog(con);
log.insertLog("4", staffid, "用户鉴权确认,号码为:'" + sjhm + "'");
log.close();
cstmt.close(); ErrText = "";
return true;
}
}catch(Exception e){
ErrText=e.toString();
return false;
}
try{
CallableStatement cstmt = con.prepareCall(sql);
cstmt.setString(1, sjhm);
cstmt.setString(2, fwmm);
cstmt.registerOutParameter(3, Types.INTEGER); //返回码 cstmt.executeUpdate(); if (cstmt.getInt(3)!=0){
cstmt.close();
ErrText = "用户鉴权确认失败!";
return false;
}else{
SystemLog log=new SystemLog(con);
log.insertLog("4", staffid, "用户鉴权确认,号码为:'" + sjhm + "'");
log.close();
cstmt.close(); ErrText = "";
return true;
}
}catch(Exception e){
ErrText=e.toString();
return false;
}
then execute it.
{
String returnstr,sqlstr,rsstr;
rs=null;
sqlstr = "{call PROC_AUTOID(?,?)}";
try
{
if (conn!=null)
{
conn.close();
}
conn = DriverManager.getConnection(sConnStr,UseName,PassWord);
CallableStatement stmt = conn.prepareCall(sqlstr);
stmt.setString(1,IDName);
stmt.registerOutParameter(2,Types.CHAR);
rs=stmt.executeQuery();
rs.next();
rsstr = rs.getString(1);
returnstr = stmt.getString(2);
rs.close();
stmt.close();
conn.close();
}
catch (Exception erproc)
{
return null;
}
return returnstr;
}把这个函数写在BEAN中,然后在JSP页面中调用就可以了
什么?存储过程在那里不知道,在数据库内部
testsqlserver.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
遇到这种情况,大家看看怎么帮我解决啊在JSP中,有没有用存储过程的必要。
testsqlserver.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
遇到这种情况,大家看看怎么帮我解决啊在JSP中,有没有用存储过程的必要。
接下来, cstmt.setString(1, sjhm);cstmt.setString(2, fwmm);是将两个入参传给存储过程; cstmt.registerOutParameter(3, Types.INTEGER); 是注册返回参数并登记其数据类型;指定完参数后就是执行存储过程了,cstmt.executeUpdate();因为ylp_UserVertify这个存储过程是一个对数据操作的存储过程所以调用executeUpdate(),如果你的存储过程是查询的话那就是调用executeQuery()了。
最后就是处理返回参数了,当然,如果是查询操作的话那就要处理结果集了。
注意,存储过程是可以以三种方式来返回的:返回参数、结果集、返回码