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 } }