.net调用存储过程
网上很多.net调用存储过程的简化版本都不行。还是老实添参数的能行。
一: 执行不带返回参数(Input)的存储过程
1: 首先在数据库写个存储过程, 如创建个 addUser存储过程。
Create Proc addUser
@ID int,
@Name varchar(20),
@Sex varchar(20)
As
Insert Into Users Values( @ID, @Name,@Sex )
2:创建SqlCommand对象,并初始SqlCommand对象 如:
SqlCommand cmd = new SqlCommand( );
cmd.CommandText = "addUser"; // 制定调用哪个存储过程
cmd.CommandType = CommandType.StoredProcedure; // 制定Sql命令类型是存储过程, 默认的为Sql语句。
cmd.Connection = con; // 设定连接
3:向SqlCommand对象添加存储过程参数
SqlParameter param = new SqlParameter( ); // 定义一个参数对象
param.ParameterName = "@ID"; // 存储过程参数名称
param.Value = txtID.Text.Trim(); // 该参数的值
cmd.Parameters.Add( param ); // SqlCommand对象添加该参数对象
param = new SqlParameter( "@Name", txtName.Text.Trim() ); // 简写方式
cmd.Parameters.Add( param );
4:SqlCommand对象调用执行Sql的函数。 如:
cmd.ExecuteNonQuery();
二:执行带返回参数(Output)的存储过程
1: 首先在数据库写个存储过程, 如创建个 queryUser存储过程。
alter Proc queryUser
@ID int,
@Suc varchar(10) output
As
select @Suc = 'false'
if exists( Select * From users where u_id = @ID )
select @Suc = 'success'
2:创建SqlCommand对象,并初始SqlCommand对象 如:
SqlCommand cmd = new SqlCommand( );
cmd.CommandText = "queryUser"; // 制定调用哪个存储过程
cmd.CommandType = CommandType.StoredProcedure; // 制定Sql命令类型是存储过程, 默认的为Sql语句。
cmd.Connection = con; // 设定连接
3:向SqlCommand对象添加存储过程参数
SqlParameter param1 = new SqlParameter( "@ID", txtID.Text ); // 添加输入参数
cmd.Parameters.Add( param1 );
SqlParameter param2 = new SqlParameter(); // 添加输出参数
param2.ParameterName = "@Suc"; // 名称
param2.SqlDbType = SqlDbType.VarChar; // 输出参数的Sql类型
param2.Size = 10; // 输出参数的Sql类型大小
param2.Direction = ParameterDirection.Output; // 指定该参数对象为输出参数类型
cmd.Parameters.Add( param2 );
4:SqlCommand对象调用执行Sql的函数。 如:
cmd.ExecuteNonQuery();
MessageBox.Show( param2.Value.ToString() ); // 输出输出参数的值
输入参数的存储过程的示例:
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "addUser";
SqlParameter param = new SqlParameter( );
param.ParameterName = "@ID";
param.Value = txtID.Text.Trim();
cmd.Parameters.Add( param );
param = new SqlParameter( "@Name", txtName.Text.Trim() );
cmd.Parameters.Add( param );
param = new SqlParameter();
param.ParameterName = "@Sex";
param.Value = txtSex.Text.Trim();
cmd.Parameters.Add( param );
//da.InsertCommand = cmd;
if ( cmd.ExecuteNonQuery() == 1 )
{
MessageBox.Show( "添加成功" );
}
else
{
MessageBox.Show("失败");
}
}
catch( SqlException ex )
{
MessageBox.Show( ex.Message );
}
输出参数的存储过程的示例:
try
{
SqlCommand cmd = new SqlCommand( );
cmd.CommandText = "queryUser";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
SqlParameter param1 = new SqlParameter( "@ID", txtID.Text );
cmd.Parameters.Add( param1 );
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@Suc";
param2.SqlDbType = SqlDbType.VarChar;
param2.Size = 10;
param2.Direction = ParameterDirection.Output;
cmd.Parameters.Add( param2 );
cmd.ExecuteNonQuery();
MessageBox.Show( param1.Value.ToString() );
MessageBox.Show( param2.Value.ToString() );
}
catch( SqlException ex )
{
MessageBox.Show( ex.Message );
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lql27/archive/2009/09/14/4552919.aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述