1. 程式人生 > >C# 後臺呼叫儲存過程

C# 後臺呼叫儲存過程

   protected void Page_Load(object sender, EventArgs e)         {             if (!Page.IsPostBack)             {

#region 實參                 string id = "1";                 string name = "大紅";                 /*              score是輸出引數,如果下面的程式碼封裝成一個方法,              這個引數前面帶有ref,比如像這種方法              public object pro_out16(              string id,               string name,               ref System.Nullable<int> score)              */                 int? score = 0;

#endregion 

                //1 、定義SqlCommand                 var command = new System.Data.SqlClient.SqlCommand();

                #region 2 、定義連結                 var _connection = new System.Data.SqlClient.SqlConnection();                 _connection.ConnectionString = WebApplication4.Properties.Settings.Default.db_sql20001ConnectionString;                 command.Connection = _connection;                 #endregion

                #region 3、 定義執行型別,比如執行儲存過程                 command.CommandText = "dbo.pro_out16";                 command.CommandType = System.Data.CommandType.StoredProcedure;                 #endregion

                #region 4。1、 定義引數型別 command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, 10, 0, null, System.Data.DataRowVersion.Current, false, null, "", "", ""));

command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@id", System.Data.SqlDbType.VarChar, 20, System.Data.ParameterDirection.Input, 0, 0, null, System.Data.DataRowVersion.Current, false, null, "", "", ""));

command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.VarChar, 20, System.Data.ParameterDirection.Input, 0, 0, null, System.Data.DataRowVersion.Current, false, null, "", "", ""));

command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@score", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.InputOutput, 10, 0, null, System.Data.DataRowVersion.Current, false, null, "", "", ""));                 #endregion

                #region 4。2引數賦值                 if ((id == null))                 {                     command.Parameters[1].Value = System.DBNull.Value;                 }                 else                 {                     command.Parameters[1].Value = ((string)(id));                 }                 if ((name == null))                 {                     command.Parameters[2].Value = System.DBNull.Value;                 }                 else                 {                     command.Parameters[2].Value = ((string)(name));                 }                 if ((score.HasValue == true))                 {                     command.Parameters[3].Value = ((int)(score.Value));                 }                 else                 {                     command.Parameters[3].Value = System.DBNull.Value;                 }                 #endregion

                #region 5、開啟連結並執行,執行後關閉連結                 System.Data.ConnectionState previousConnectionState = command.Connection.State;                 if (((command.Connection.State & System.Data.ConnectionState.Open)                             != System.Data.ConnectionState.Open))                 {                     command.Connection.Open();                 }                 object returnValue;                 try                 {                     returnValue = command.ExecuteScalar();                 }                 finally                 {                     if ((previousConnectionState == System.Data.ConnectionState.Closed))                     {                         command.Connection.Close();                     }                 }                 #endregion

                #region 6、執行後獲取輸出引數的值                 if (((command.Parameters[3].Value == null)                             || (command.Parameters[3].Value.GetType() == typeof(System.DBNull))))                 {                     score = new System.Nullable<int>();                 }                 else                 {                     score = new System.Nullable<int>(((int)(command.Parameters[3].Value)));                 }                 #endregion

                #region 在介面上顯示輸出引數的值                 TextBox1.Text = score.ToString();                 #endregion             }         }