您的位置:首页 > 其它

【ZT】ADO.NET调用存储过程

2010-12-27 14:22 411 查看
一: 执行不带返回参数(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 );
}

public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{

DataSet dataSet = new DataSet();

SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand( storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);

return dataSet;

}
存储过程 以下是SQL中存储过程CREATE PROCEDURE dbo.oa_SelectByID @id int AS select * from UserInfo where ID=@id GO 带参数的存储过程: protected void btn_search_Click(object sender, EventArgs e) { //带参数的存储过程的使用方法 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["oaConnectionString"].ToString()); SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); da.SelectCommand = new SqlCommand(); da.SelectCommand.Connection = conn; da.SelectCommand.CommandText = "oa_SelectByID"; da.SelectCommand.CommandType = CommandType.StoredProcedure; SqlParameter param = new SqlParameter("@id", SqlDbType.Int); param.Direction = ParameterDirection.Input; param.Value = Convert.ToInt32(txt_value.Text); da.SelectCommand.Parameters.Add(param); da.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind(); } 同样,在页面中添加了一个GridView控件用来绑定执行存储过程的结果,另外,在页面中还添加了一个textbox控件和一个BUTTON按钮,上面的执行存储过程是放在按钮的onclick事件中的.textbox控件用来接收存储过程的参数.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: