.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 );
   }

注:转载自http://blog.pfan.cn/fengfei/articlelist_1772_2899_1.html

### 如何在 ASP.NET C# 中调用 SQL Server 存储过程 为了在 ASP.NET 应用程序中成功调用 SQL Server 的存储过程,需遵循一系列操作流程并确保引入必要的命名空间 `System.Data.SqlClient`[^1]。 #### 创建数据库连接 建立到 SQL Server 数据库的连接是通过创建一个新的 `SqlConnection` 对象实现。此对象接收一个包含服务器名称、数据库名以及认证信息在内的连接字符串作为参数: ```csharp using (SqlConnection connection = new SqlConnection("Data Source=ServerName;Initial Catalog=DatabaseName;User ID=Username;Password=Password")) { // 进一步的操作... } ``` #### 定义命令来执行存储过程 一旦建立了有效的数据库连接,则可通过定义 `SqlCommand` 来指定要执行的具体存储过程及其参数。设置 `CommandType` 属性为 `StoredProcedure` 表明即将运行的是一个预编译好的查询而非普通的 T-SQL 文本指令: ```csharp using (SqlCommand command = new SqlCommand("YourStoredProcedureName", connection)) { command.CommandType = CommandType.StoredProcedure; // 添加输入参数(如果有的话) SqlParameter parameter = new SqlParameter("@ParameterName", SqlDbType.VarChar); parameter.Value = "ParameterValue"; command.Parameters.Add(parameter); // 执行非查询命令或获取返回值/输出参数 connection.Open(); int result = command.ExecuteNonQuery(); // 处理结果... } ``` 上述代码片段展示了如何向存储过程中传递参数,并说明了当不需要从存储过程获得任何数据集时可以使用的简单模式——即调用了 `ExecuteNonQuery()` 方法用于提交更改而不期望有记录集合被返回的情况。 对于那些确实会产出结果集的情形下,比如 SELECT 语句存在于存储体内的话,则应该考虑使用 `SqlDataReader` 或者其他适配器类如 `DataAdapter` 去填充 DataTable/Dataset 结构以便于后续处理显示给用户端控件[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值