Java JSP 调用 SQLServer2000 存储过程示例

需积分: 9 2 下载量 125 浏览量 更新于2024-07-29 收藏 123KB DOC 举报
"本文介绍了如何在JSP中调用SQL Server 2000的存储过程。首先展示了创建数据库表mytest以及存储过程get_info的步骤,然后提供了JSP代码示例来演示调用存储过程的方法。" 在Java Web开发中,JSP(JavaServer Pages)经常用于生成动态网页内容。当需要与数据库进行交互时,有时会使用存储过程来执行复杂的SQL操作或封装业务逻辑。SQL Server 2000是一个流行的关系型数据库管理系统,它支持创建存储过程。以下是如何在JSP中调用SQL Server 2000存储过程的详细步骤: 1. 创建数据库表: 首先,我们需要创建一个名为`mytest`的表,包含四个字段:`id`(整数,非空)、`name`(50个字符的变量长度字符串,非空)、`phone`(13个字符的变量长度字符串,可空)和`addr`(50个字符的变量长度字符串,可空)。使用`CREATE TABLE`语句创建表,并设置相应的数据类型和约束。 ```sql CREATE TABLE [mytest] ( [id] [int] NOT NULL, [name] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL, [phone] [varchar](13) COLLATE Chinese_PRC_CI_AS NULL, [addr] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO ``` 2. 创建存储过程: 接下来,定义一个名为`get_info`的存储过程,它接受三个参数:`@name`、`@phone`和`@addr`,并返回`mytest`表中的所有记录。存储过程的创建使用`CREATE PROCEDURE`语句。 ```sql create procedure get_info @name varchar(50), @phone varchar(13), @addr varchar(50) as begin select * from mytest end GO ``` 3. JSP调用存储过程: 在JSP页面中,我们需要连接到SQL Server数据库并执行存储过程。这里使用了Java的JDBC(Java Database Connectivity)API来实现这一目标。以下是一个简单的JSP代码片段,展示了如何设置数据库连接、执行存储过程并处理结果集: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*, tools.Database"%> <%-- Struts库导入 --%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:html locale="true"> <head> <html:base/> <title>proc_test.jsp</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="..."/> </head> <body> <!-- 连接数据库 --> <jsp:useBean id="db" class="tools.Database" scope="session" /> <jsp:setProperty name="db" property="*" /> <!-- 执行存储过程 --> Connection conn = db.getConnection(); CallableStatement cs = conn.prepareCall("{call get_info(?,?,?)}"); cs.setString(1, "参数1"); cs.setString(2, "参数2"); cs.setString(3, "参数3"); cs.execute(); <!-- 处理结果集 --> ResultSet rs = cs.getResultSet(); while (rs.next()) { // 输出或处理结果集中的每一行数据 } <!-- 关闭连接 --> rs.close(); cs.close(); conn.close(); </body> </html:html> ``` 在这个JSP示例中,我们首先创建了一个名为`Database`的工具类,它可能包含了获取数据库连接的方法。然后,我们通过`CallableStatement`实例化并调用存储过程,将参数传递给存储过程。最后,我们处理存储过程返回的结果集,通常包括遍历结果并显示在页面上。 需要注意的是,实际应用中应确保处理数据库连接的关闭,防止资源泄漏。此外,为了增强安全性,应该使用预编译的`PreparedStatement`来防止SQL注入,并考虑使用连接池管理数据库连接。 JSP调用SQL Server 2000存储过程涉及数据库连接、存储过程的定义以及JDBC API的使用。通过这些步骤,可以灵活地在Web应用程序中执行数据库相关的复杂操作。