JSP中调用存储过程(SQL2000)
2009-01-08 16:41
246 查看
创建测试数据库:
CREATE DATABASE Book
go
use Book
CREATE TABLE users(
id varchar (50) null,
name varchar(50) null,
password int null
)
go
use Book
INSERT INTO users VALUES("aaaaa","bbbb",2222)
go
创建存储过程:
use Book
go
CREATE PROCEDURE user1
@id varchar(50) output,
@name varchar(50) output,
@password int output
as
INSERT INTO users (id,name,password) VALUES(@id,@name,@password)
RETURN 1--此为返回结果集,即JSP中变量sql的第一个问号
GO
创建JSP:
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<%/*author:Robsen */
/*E-mail:luoqinglong0102#163.com */
String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Book"; //这是SQL 2000的URL地址,和2005的不一样
String user = "sa";
String password = "";
//第一个"?"为存储过程的返回结果集,调用存储过程的SQL语句的语法参看JDK API的CallableStatement类
String sql = "{? = call user1(?,?,?)}"; //user1为存储过程的名字
Connection conn = null;
CallableStatement cs = null;
try{
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url,user,password);
//创建一个 CallableStatement 对象来调用数据库存储过程。
cs = conn.prepareCall(sql);
//cs.setXXX(int parameterIndex,XXX x)用于给问号赋值,"parameterIndex"为"?"的序号,
//此处"?"不能用数据库的字段名代替(本人用的是SQL 2000,听说2005可以用字段名),如"id","name"
cs.setString(2,"s12233ss"); //"2"表示存储过程里的第一个变量;为什么不是"1",因为在变量"sql"中这是第二个问好
cs.setString(3,"123131");
cs.setInt(4,2342);
//registerOutParameter(x,y)为注册函数,第一个参数为"?"的序号,此处不能用数据库的字段名代替,如"id","name"
//原型为:registerOutParameter(int parameterIndex, int sqlType),
//按顺序位置 parameterIndex 将 OUT 参数注册为 JDBC 类型 sqlType。
cs.registerOutParameter(1,java.sql.Types.INTEGER);//"1"表示"sql"变量中的第一个?,一定要在这里注册
cs.registerOutParameter(2,java.sql.Types.VARCHAR);//
cs.registerOutParameter(3,java.sql.Types.VARCHAR);
cs.registerOutParameter(4,java.sql.Types.INTEGER);
cs.execute();
//在使用cs.getXXX(int parameterIndex)方法前,除了返回结果集,
//其余的"?"(参数)要在存储过程中声明为"output",否则运行是会出错误
int returnValue = cs.getInt(1) ;//获取从存储过程返回的结果集,本存储过程用return返回
String id = cs.getString(2);
String name = cs.getString(3);
int password1 = cs.getInt(4);
if( returnValue== 1){
out.print("<br><hr><li>添加成功!");
out.print("<br>id:"+id);
out.print("<br>name:"+name);
out.print("<br>password:"+password1);
out.print("<li>returnValue = " + returnValue);
}else{
out.print("<li>添加失败!");
}
}
catch(Exception ex)
{
out.print(ex.getLocalizedMessage());//getLocalizedMessage()这个方法很好用,抛出异常时会有好提示
}
finally
{
try
{
if(cs != null)
{
cs.close();
cs = null;
}
if(conn != null)
{
conn.close();
conn = null;
}
}catch(Exception e)
{
e.printStackTrace();
}
}
%>
<h2>wwwwwwwwwwwwwwwwww</h2>
</body>
</html>
CREATE DATABASE Book
go
use Book
CREATE TABLE users(
id varchar (50) null,
name varchar(50) null,
password int null
)
go
use Book
INSERT INTO users VALUES("aaaaa","bbbb",2222)
go
创建存储过程:
use Book
go
CREATE PROCEDURE user1
@id varchar(50) output,
@name varchar(50) output,
@password int output
as
INSERT INTO users (id,name,password) VALUES(@id,@name,@password)
RETURN 1--此为返回结果集,即JSP中变量sql的第一个问号
GO
创建JSP:
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<%/*author:Robsen */
/*E-mail:luoqinglong0102#163.com */
String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Book"; //这是SQL 2000的URL地址,和2005的不一样
String user = "sa";
String password = "";
//第一个"?"为存储过程的返回结果集,调用存储过程的SQL语句的语法参看JDK API的CallableStatement类
String sql = "{? = call user1(?,?,?)}"; //user1为存储过程的名字
Connection conn = null;
CallableStatement cs = null;
try{
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url,user,password);
//创建一个 CallableStatement 对象来调用数据库存储过程。
cs = conn.prepareCall(sql);
//cs.setXXX(int parameterIndex,XXX x)用于给问号赋值,"parameterIndex"为"?"的序号,
//此处"?"不能用数据库的字段名代替(本人用的是SQL 2000,听说2005可以用字段名),如"id","name"
cs.setString(2,"s12233ss"); //"2"表示存储过程里的第一个变量;为什么不是"1",因为在变量"sql"中这是第二个问好
cs.setString(3,"123131");
cs.setInt(4,2342);
//registerOutParameter(x,y)为注册函数,第一个参数为"?"的序号,此处不能用数据库的字段名代替,如"id","name"
//原型为:registerOutParameter(int parameterIndex, int sqlType),
//按顺序位置 parameterIndex 将 OUT 参数注册为 JDBC 类型 sqlType。
cs.registerOutParameter(1,java.sql.Types.INTEGER);//"1"表示"sql"变量中的第一个?,一定要在这里注册
cs.registerOutParameter(2,java.sql.Types.VARCHAR);//
cs.registerOutParameter(3,java.sql.Types.VARCHAR);
cs.registerOutParameter(4,java.sql.Types.INTEGER);
cs.execute();
//在使用cs.getXXX(int parameterIndex)方法前,除了返回结果集,
//其余的"?"(参数)要在存储过程中声明为"output",否则运行是会出错误
int returnValue = cs.getInt(1) ;//获取从存储过程返回的结果集,本存储过程用return返回
String id = cs.getString(2);
String name = cs.getString(3);
int password1 = cs.getInt(4);
if( returnValue== 1){
out.print("<br><hr><li>添加成功!");
out.print("<br>id:"+id);
out.print("<br>name:"+name);
out.print("<br>password:"+password1);
out.print("<li>returnValue = " + returnValue);
}else{
out.print("<li>添加失败!");
}
}
catch(Exception ex)
{
out.print(ex.getLocalizedMessage());//getLocalizedMessage()这个方法很好用,抛出异常时会有好提示
}
finally
{
try
{
if(cs != null)
{
cs.close();
cs = null;
}
if(conn != null)
{
conn.close();
conn = null;
}
}catch(Exception e)
{
e.printStackTrace();
}
}
%>
<h2>wwwwwwwwwwwwwwwwww</h2>
</body>
</html>
相关文章推荐
- JSP中调用存储过程
- jsp调用存储过程[1]
- C# 2.0 Vista,sql2000带返回值存储过程调用
- JSP调用MSSQL存储过程
- Java/JSP中调用SQL Server存储过程完整示例
- Java/JSP中调用SQL Server存储过程完整示例
- jsp调用存储过程
- java(jsp) 调用存储过程(转自孟宪会 net_lover)
- JSP调用存储过程
- JSP调用SQL Server 2000的存储过程
- JSP调用ORALCE存储过程显示简单的查询结果(以表格形式显示)
- 实例讲解JSP调用SQL Server的存储过程
- Java/JSP中调用SQL Server存储过程完整示例收藏
- Java/JSP中调用SQL Server存储过程完整示例
- Java/JSP中调用SQL Server存储过程完整示例
- C#调用sql2000存储过程方法小结
- Java/JSP中调用SQL Server存储过程完整示例
- Java/JSP中调用SQL Server存储过程完整示例
- Java/JSP中调用SQL Server存储过程完整示例
- jsp调用存储过程