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