C# 調用預存程序

來源:互聯網
上載者:User

標籤: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# 調用預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.