C# 將Datatable作為參數,傳入預存程序

來源:互聯網
上載者:User

標籤:style   blog   color   io   ar   strong   資料   sp   div   

//建立一個靜態方法 
public static DataSet fnInsertSingleUser(DataTable v_dt, params string[] param) { try { SqlConnection cn = new SqlConnection(connectionString);//connertionString連結資料庫字串 SqlCommand cmd = cn.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = @"" + param[0]; SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
          //參數可以隨意增加 SqlParameter pCode = cmd.Parameters.AddWithValue("@pCode", param[1]); SqlParameter gsdm = cmd.Parameters.AddWithValue("@gsdm", param[2]); SqlParameter khdm = cmd.Parameters.AddWithValue("@khdm", param[3]); SqlParameter qy = cmd.Parameters.AddWithValue("@qy", param[4]); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); return ds; } catch (Exception ex) { throw ex; } }

SQL

IF EXISTS ( SELECT  A = 1            FROM    sys.objects            WHERE   name = ‘PRCreate ‘                    AND type = ‘P‘ )     DROP PROCEDURE dbo.PRCreate go IF EXISTS ( SELECT  A = 1            FROM    sys.table_types            WHERE   name = ‘tempPR ‘                    AND is_user_defined = 1 )     DROP TYPE dbo.tempPRgoCREATE TYPE dbo.tempPR AS TABLE(PT_PCURR  decimal(15, 2), --這2個欄位必須與傳入的C# datatable中 欄位的先後順序一致MATNR   varchar(18)--)goCREATE PROCEDURE dbo.PRCreate    (      @User AS dbo.tempPR READONLY, --C# datatable參數      @pCode varchar(50),      @gsdm varchar(50),      @khdm varchar(50),      @qy varchar(50)    )AS     BEGIN
  SELECT * FROM @User
  END

調用

            DataSet ds = new DataSet();            ds = SqlHelper.fnInsertSingleUser(dt, "PRCreate", param[0], param[2], param[3], param[4]);//在預存程序中處理,返回結果集

調用時注意傳入的參數必須與預存程序中 @User @pCode @gsdm @khdm @qy 的參數一致(見第一段代碼)

 

重點:

1、就是傳入預存程序的Datatable參數的欄位先後順序,必須與在預存程序中建立的表欄位的先後順序一致

2、調試:用一句select語句,返回一個DataSet到C#中看看,傳入datatable是否正確



C# 將Datatable作為參數,傳入預存程序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.