### JSP调用SQL Server的存储过程 在本篇文章中,我们将探讨如何通过JSP页面来调用SQL Server中的存储过程。此示例涉及到数据库表的创建、存储过程的定义以及JSP页面上的具体实现。 #### 数据库表的创建 我们来看看数据库表`BookUser`的创建语句: ```sql CREATE TABLE [BookUser]( [UserID] [int] IDENTITY(1,1) NOT NULL, [UserName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL, [Title] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL, [Guid] [uniqueidentifier] NOT NULL CONSTRAINT [DF_BookUser_Guid] DEFAULT(newid()), [BirthDate] [datetime] NOT NULL, [Description] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL, [Photo] [image] NULL, [Other] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_BookUser_Other] DEFAULT('Ĭֵ'), CONSTRAINT [PK_BookUser] PRIMARY KEY CLUSTERED ( [UserID] ) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] ``` 此表包含了用户的基本信息,如`UserID`、`UserName`等字段。其中`UserID`为自动增长的主键,`UserName`为用户名,`Title`表示头衔,`Guid`是一个唯一的标识符,`BirthDate`为出生日期,`Description`为描述信息,`Photo`用于存储图片,`Other`为其他信息。 #### 存储过程的定义 接下来,定义了一个名为`InsertUser`的存储过程,其作用是在`BookUser`表中插入新的记录: ```sql CREATE PROCEDURE InsertUser @UserName varchar(50), @Title varchar(255), @Guid uniqueidentifier, @BirthDate DateTime, @Description ntext, @Photo image, @Other nvarchar(50), @UserID int output AS BEGIN SET NOCOUNT ON; IF EXISTS (select UserID from BookUser Where UserName = @UserName) RETURN 0; ELSE BEGIN INSERT INTO BookUser(UserName, Title, Guid, BirthDate, Description, Photo, Other) VALUES (@UserName, @Title, @Guid, @BirthDate, @Description, @Photo, @Other); SET @UserID = @@IDENTITY; RETURN 1; END; END; ``` 该存储过程接受多个输入参数,并有一个输出参数`@UserID`。当用户名已经存在于表中时,返回0;否则,插入新记录并返回1。 #### JSP页面的具体实现 在JSP页面上实现对上述存储过程的调用。首先需要加载SQL Server的JDBC驱动: ```java Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` 然后设置连接字符串: ```java String url = "jdbc:sqlserver://localhost:1433;databaseName=Book;user=sa;password="; ``` 接下来是具体的调用代码: ```java String sql = "{?=call InsertUser(?,?,?,?,?,?,?,?)}"; Connection cn = null; CallableStatement cmd = null; try { cn = DriverManager.getConnection(url); cmd = cn.prepareCall(sql); java.util.UUID Guid = java.util.UUID.randomUUID(); String FilePath = application.getRealPath("") + "\\test\\logo.gif"; java.io.FileInputStream f = new java.io.FileInputStream(FilePath); Date rightNow = Date.valueOf("2007-9-9"); cmd.setString("UserName", "mengxianhui"); // 确保 UserName 的唯一性 cmd.setString("Title", "职务"); cmd.setString("Guid", Guid.toString()); cmd.setString("BirthDate", "2007-09-09"); // 其他参数设置 } ``` 在这段代码中,我们通过`prepareCall`方法准备了一个可调用的存储过程,然后设置了各个参数的值。 ### 总结 本文介绍了如何在JSP页面中调用SQL Server的存储过程,包括数据库表的创建、存储过程的定义及JSP页面的具体实现。这种方式可以提高代码的复用性和安全性,同时也简化了数据库操作的过程。在实际开发中,还可以结合异常处理等机制来增强程序的健壮性。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
CREATE TABLE [BookUser] (
[UserID] [int] IDENTITY (1, 1) NOT NULL ,
[UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Guid] [uniqueidentifier] NOT NULL CONSTRAINT [DF_BookUser_Guid] DEFAULT (newid()),
[BirthDate] [datetime] NOT NULL ,
[Description] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Photo] [image] NULL ,
[Other] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
CONSTRAINT [DF_BookUser_Other] DEFAULT ('默认值'),
CONSTRAINT [PK_BookUser] PRIMARY KEY CLUSTERED
(
[UserID]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
创建存储过程:
CREATE PROCEDURE InsertUser
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 0
- 资源: 14
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- YOLO算法-塑料数据集-7张图像带标签-塑料.zip
- 极客时间-面试现场(关于面试相关的注意事项)
- YOLO算法-刀具检测数据集-58张图像带标签-.zip
- 劳斯莱斯豪车内部装饰及版本特色展示
- 面试神器(开箱即用,一键安装)
- 农村综合风貌展示平台项目源代码全套技术资料.zip
- 【源文件说明】(MMI)多模子系统文件说明
- 找工作薪资翻倍的独家揭秘.pdf
- 自学考试02331数据结构试题及答案2021-2022
- C++实现rpc,全程手写
- 【二开诺诺打赏】最新某站上买的二开诺诺打赏/独立代理后台/带教程
- MyTinySTL-master使用C++手写STL
- 网盘项目源代码全套技术资料.zip
- 手写WebServer-master
- 离散数学课后题答案+sdut往年试卷+复习提纲资料
- 支付宝当面付打赏系统源码开源版
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)