標籤:c# 調用 儲存 過程 參數
下面以調用:Sql Server 分頁預存程序為例
調用代碼如下:
string MyConn = "server=資料庫伺服器Ip;uid=資料庫使用者名稱;pwd=密碼;database=資料庫名稱;Trusted_Connection=no"; SqlConnection MyConnection = new SqlConnection(MyConn); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = new SqlCommand(); da.SelectCommand.Connection = MyConnection; da.SelectCommand.CommandText = "proc_ListPageInt"; da.SelectCommand.CommandType = CommandType.StoredProcedure; IDataParameter[] parameters = { new SqlParameter("@tblName", SqlDbType.NVarChar) , new SqlParameter("@fldName", SqlDbType.NVarChar) , new SqlParameter("@pageSize", SqlDbType.Int) , new SqlParameter("@page", SqlDbType.Int) , new SqlParameter("@pageCount", SqlDbType.Int) , new SqlParameter("@Counts", SqlDbType.Int) , new SqlParameter("@fldSort", SqlDbType.NVarChar) , new SqlParameter("@Sort", SqlDbType.Bit) , new SqlParameter("@strCondition", SqlDbType.NVarChar) , new SqlParameter("@ID", SqlDbType.NVarChar) , new SqlParameter("@Dist", SqlDbType.Bit) }; // 設定參數類型 parameters[0].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[0].Value = "sysobjects"; parameters[1].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[1].Value = "*"; parameters[2].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[2].Value =20; parameters[3].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[3].Value = 1; parameters[4].Direction = ParameterDirection.Output;// 設定為輸出參數 parameters[5].Direction = ParameterDirection.Output;// 設定為輸出參數 parameters[6].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[6].Value = "id"; parameters[7].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[7].Value = 0; parameters[8].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[8].Value = ""; parameters[9].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[9].Value = "id"; parameters[10].Direction = ParameterDirection.Input;// 設定為輸入參數 parameters[10].Value =0; da.SelectCommand.Parameters.Add(parameters[0]); da.SelectCommand.Parameters.Add(parameters[1]); da.SelectCommand.Parameters.Add(parameters[2]); da.SelectCommand.Parameters.Add(parameters[3]); da.SelectCommand.Parameters.Add(parameters[4]); da.SelectCommand.Parameters.Add(parameters[5]); da.SelectCommand.Parameters.Add(parameters[6]); da.SelectCommand.Parameters.Add(parameters[7]); da.SelectCommand.Parameters.Add(parameters[8]); da.SelectCommand.Parameters.Add(parameters[9]); da.SelectCommand.Parameters.Add(parameters[10]); MyConnection.Open();
調用預存程序的東東已經搞定了,那麼怎麼擷取dataset呢?
方法一:
SqlDataAdapter dp = new SqlDataAdapter(da.SelectCommand); DataSet ds = new DataSet(); dp.Fill(ds);
方法二:
SqlDataReader reader = da.SelectCommand.ExecuteReader();//讀取資料 DataSet ds = this.ConvertDataReaderToDataSet(reader); MyConnection.Close();
執行結果如下:
與在資料庫中執行的結果一致。
那麼新的問題來了,如果擷取預存程序的返回參數呢?
比如擷取pageCount,代碼如下:
int pageCount = int.Parse(da.SelectCommand.Parameters["@pageCount"].Value.ToString());
小注
DataReader轉DataSet方法
C# 調用預存程序