您好,登錄后才能下訂單哦!
本篇內容主要講解“C#下SQL Server 2008表類型參數傳遞的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C#下SQL Server 2008表類型參數傳遞的方法是什么”吧!
我們通過ADO.Net在C#下演示這項SQL Server 2008的新功能。
首先,我們在SQL Server 2008下創建一個示例數據庫名為Test,再在該數據庫下創建一個名為User的表,結構如下:
再在Test數據庫下創建一個自定義表類型,取名UserDetailType,如下:
CREATE TYPE [dbo].[UserDetailsType] AS TABLE( [ID] [varchar](50) NULL, [Name] [varchar](50) NULL, [Sex] [varchar](50) NULL, [Age] [decimal](18, 0) NULL )
然后,創建一個存儲過程,取名InsertUserInfo,如下:
CREATE PROCEDURE [dbo].[InsertUserInfo] @UserInfo [UserDetailsType] readonly AS BEGIN insert into [User] ([ID], [Name], [Sex], [Age]) select [ID], [Name], [Sex], [Age] from @UserInfo; END
啟動Visual Studio 2008,創建一個默認的窗體應用程序后,我們需要先在內存中創建一個數據庫表DataTable的實例,如下:
private static DataTable PrepareDatatable() { DataTable dt = new DataTable("dt"); DataColumn[] dtc = new DataColumn[4]; dtc[0] = new DataColumn("ID", System.Type.GetType("System.String")); dtc[1] = new DataColumn("Name", System.Type.GetType("System.String")); dtc[2] = new DataColumn("Sex", System.Type.GetType("System.String")); dtc[3] = new DataColumn("Age", System.Type.GetType("System.Decimal")); dt.Columns.AddRange(dtc); return dt; }
然后,通過SqlCommand執行剛才我們創建的Test數據庫存儲過程InsertUserInfo,并傳遞我們在內存中創建的DataTable的實例,如下:
private static void SaveUserInfoDetails() { DataTable dt = PrepareDatatable(); for (int i=0;i< =5;i++) { DataRow dr = dt.NewRow(); dr[0] = i.ToString(); dr[1] = "Name" + i.ToString(); dr[2] = "男"; dr[3] = (i*10).ToString(); dt.Rows.Add(dr); } using (SqlConnection conn = new SqlConnection("server=Rithia;database=Test;integrated security=SSPI")) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = "dbo.InsertUserInfo"; SqlParameter param = cmd.Parameters.AddWithValue("@UserInfo", dt); conn.Open(); cmd.ExecuteNonQuery(); } }
通過上面的示例,我們可以在程序客戶端先創建好要傳遞的表類型數據,然后傳遞給存儲過程,而存儲過程則將SQL Server 2008表類型參數中的記錄一次性的添加到了數據庫實體表中,這種操作在需要傳遞給存儲過程數組形式的參數時非常非常方便。
到此,相信大家對“C#下SQL Server 2008表類型參數傳遞的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。