ASP.NET调用存储过程示例:输入输出参数与返回值
3星 · 超过75%的资源 需积分: 16 142 浏览量
更新于2024-09-20
1
收藏 60KB DOC 举报
"ASP.NET中调用存储过程的实例教程"
在ASP.NET开发中,存储过程是一种常用的技术,用于封装数据库中的复杂逻辑或操作。本文将详细介绍如何在ASP.NET中调用带有输入输出参数和返回值的存储过程。
首先,我们需要创建一个简单的数据库和表。在示例中,我们创建了一个名为"Student"的数据库,并在其中创建了"Users"表,包含两个字段:`id`(主键,自动递增)和`name`、`password`(非空)。
```sql
use Student
go
create table Users
(
id int identity(1,1) primary key,
name nvarchar(20) not null,
password nvarchar(20) not null
)
```
接着,我们创建一个带输入参数的存储过程`proc_login`,它接受用户名`@name`和密码`@password`,并根据这些参数查询"Users"表中的匹配记录。
```sql
create procedure proc_login
@name nvarchar(20),
@password nvarchar(20)
as
begin
select *
from Users
where name = @name and password = @password
end
go
```
在ASP.NET应用中,调用这个存储过程通常需要以下步骤:
1. 首先,获取数据库连接字符串,这通常存储在应用程序的配置文件(如Web.config)中。可以通过`ConfigurationManager.AppSettings`来获取。
```csharp
private string connectionString = ConfigurationManager.AppSettings["connectionString"];
```
2. 创建一个新的`SqlConnection`对象,传入连接字符串。
```csharp
using (SqlConnection conn = new SqlConnection(connectionString))
{
// ...
}
```
3. 初始化一个`SqlCommand`对象,设置其命令文本为存储过程的名称,并指定命令类型为`CommandType.StoredProcedure`。
```csharp
SqlCommand cmd = new SqlCommand("proc_login", conn);
cmd.CommandType = CommandType.StoredProcedure;
```
4. 添加参数到命令对象,与存储过程中的参数相对应。
```csharp
cmd.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar, 20)).Value = name;
cmd.Parameters.Add(new SqlParameter("@password", SqlDbType.NVarChar, 20)).Value = password;
```
5. 打开数据库连接,执行命令,通常会用到`ExecuteReader`或`ExecuteScalar`等方法。在这个例子中,由于存储过程返回的是用户信息,可以使用`ExecuteReader`来获取结果集。
```csharp
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
// 处理查询结果
}
reader.Close();
```
如果存储过程有输出参数或返回值,我们还需要设置参数的方向(如`InputOutput`或`ReturnValue`),并在执行命令后读取这些参数的值。
例如,如果在`proc_login`中添加一个输出参数`@success`来指示登录是否成功,我们可以这样修改存储过程:
```sql
create procedure proc_login
@name nvarchar(20),
@password nvarchar(20),
@success bit output
as
begin
set @success = (select count(*) from Users where name = @name and password = @password) > 0;
end
go
```
然后在C#代码中:
```csharp
cmd.Parameters.Add(new SqlParameter("@success", SqlDbType.Bit) { Direction = ParameterDirection.Output });
// 执行命令
conn.Open();
cmd.ExecuteNonQuery();
bool isLoggedIn = (bool)cmd.Parameters["@success"].Value;
```
通过这种方式,ASP.NET应用能够有效地调用SQL Server中的存储过程,处理复杂的数据库操作,同时保持代码的清晰和可维护性。
2020-10-22 上传
2008-11-12 上传
2011-03-10 上传
2012-08-08 上传
2020-12-15 上传
点击了解资源详情
2009-05-19 上传
yhp518
- 粉丝: 0
- 资源: 2
最新资源
- Solution_LinkQueue,新年快乐c语言源码,c语言
- Arrays
- 安卓奇奇动画v3.96纯净版 看动漫神器.txt打包整理.zip
- koa-routeasy:在KoaJS中创建路由的简单方法
- linux图形透明度错误shadedErrorBar.m:linux图形透明度错误shadedErrorBar.m-matlab开发
- Kusa Twitch-crx插件
- [聊天留言]工具啦新春许愿墙_nywish.rar
- qiankun-source-code:微前端框架-qiankun源码阅读
- GetOrganized:ASP.NET MVC연습
- RA8875-7,c语言0随机数源码,c语言
- 安卓多功能计算器V1.7.8 应有尽有.txt打包整理.zip
- angular-strict
- hash_formatter:Hash Formatter 是一个为代码编辑器格式化 Ruby 哈希的库
- 웹툰보기 - 바트웹툰-crx插件
- PMP-2013.zip
- HeidiSQL-12.6-64-Portable.zip