1. 程式人生 > >ADO NET調用存儲過程 過程比較全

ADO NET調用存儲過程 過程比較全

.net sele 分享 零基礎 調用 HERE clas var har

分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.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://www.captainbed.net

ADO NET調用存儲過程 過程比較全