日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
C#下實(shí)現(xiàn)SQLServer2008數(shù)據(jù)庫(kù)的表類(lèi)型參數(shù)傳遞

C#下實(shí)現(xiàn)SQL Server 2008數(shù)據(jù)庫(kù)的表類(lèi)型參數(shù)傳遞的相關(guān)知識(shí)是本文我們主要要介紹的內(nèi)容,在學(xué)習(xí)SQL Server 2008的過(guò)程中,突然發(fā)現(xiàn)SQL Server支持自定義表類(lèi)型,我們可以輕松的將一個(gè)SQL Server 2008表類(lèi)型作為參數(shù)傳遞給存儲(chǔ)過(guò)程。

我們通過(guò)ADO.Net在C#下演示這項(xiàng)SQL Server 2008的新功能。

首先,我們?cè)赟QL Server 2008下創(chuàng)建一個(gè)示例數(shù)據(jù)庫(kù)名為T(mén)est,再在該數(shù)據(jù)庫(kù)下創(chuàng)建一個(gè)名為User的表,結(jié)構(gòu)如下:

再在Test數(shù)據(jù)庫(kù)下創(chuàng)建一個(gè)自定義表類(lèi)型,取名UserDetailType,如下:

 
 
 
 
  1. CREATE TYPE [dbo].[UserDetailsType] AS TABLE(
  2.     [ID] [varchar](50) NULL,
  3.     [Name] [varchar](50) NULL,
  4.     [Sex] [varchar](50) NULL,
  5.     [Age] [decimal](18, 0) NULL

然后,創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,取名InsertUserInfo,如下:

 
 
 
 
  1. CREATE PROCEDURE [dbo].[InsertUserInfo] @UserInfo  [UserDetailsType] readonly
  2. AS
  3. BEGIN
  4.     insert into [User] ([ID], [Name], [Sex], [Age])
  5.     select [ID], [Name], [Sex], [Age]
  6.     from @UserInfo;
  7. END

啟動(dòng)Visual Studio 2008,創(chuàng)建一個(gè)默認(rèn)的窗體應(yīng)用程序后,我們需要先在內(nèi)存中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表DataTable的實(shí)例,如下:

 
 
 
 
  1. private static DataTable PrepareDatatable()
  2. {
  3.     DataTable dt = new DataTable("dt");
  4.     DataColumn[] dtc = new DataColumn[4];
  5.     dtc[0] = new DataColumn("ID", System.Type.GetType("System.String"));
  6.     dtc[1] = new DataColumn("Name", System.Type.GetType("System.String"));
  7.     dtc[2] = new DataColumn("Sex", System.Type.GetType("System.String"));
  8.     dtc[3] = new DataColumn("Age", System.Type.GetType("System.Decimal"));
  9.     dt.Columns.AddRange(dtc);
  10.     return dt;

然后,通過(guò)SqlCommand執(zhí)行剛才我們創(chuàng)建的Test數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程InsertUserInfo,并傳遞我們?cè)趦?nèi)存中創(chuàng)建的DataTable的實(shí)例,如下:

 
 
 
 
  1. private static void SaveUserInfoDetails()
  2.        {
  3.            DataTable dt = PrepareDatatable();
  4.            for (int i=0;i< =5;i++)
  5.            {
  6.                DataRow dr = dt.NewRow();
  7.                dr[0] = i.ToString();
  8.                dr[1] = "Name" + i.ToString();
  9.                dr[2] = "男";
  10.                dr[3] = (i*10).ToString();
  11.                dt.Rows.Add(dr);
  12.            }
  13.            using (SqlConnection conn = new SqlConnection("server=Rithia;database=Test;integrated security=SSPI"))
  14.            {
  15.                SqlCommand cmd = conn.CreateCommand();
  16.                cmd.CommandType = System.Data.CommandType.StoredProcedure;
  17.                cmd.CommandText = "dbo.InsertUserInfo";
  18.                SqlParameter param = cmd.Parameters.AddWithValue("@UserInfo", dt);
  19.                conn.Open();
  20.                cmd.ExecuteNonQuery();
  21.            }
  22.        } 

通過(guò)上面的示例,我們可以在程序客戶端先創(chuàng)建好要傳遞的表類(lèi)型數(shù)據(jù),然后傳遞給存儲(chǔ)過(guò)程,而存儲(chǔ)過(guò)程則將SQL Server 2008表類(lèi)型參數(shù)中的記錄一次性的添加到了數(shù)據(jù)庫(kù)實(shí)體表中,這種操作在需要傳遞給存儲(chǔ)過(guò)程數(shù)組形式的參數(shù)時(shí)非常非常方便。

該示例在Visual Studio 2008 SP1 + SQL Server 2008 +Windows XP SP3下編譯調(diào)試通過(guò)。

這樣,就在C#下實(shí)現(xiàn)了SQL Server 2008表類(lèi)型參數(shù)傳遞。

關(guān)于C#下實(shí)現(xiàn)SQL Server 2008數(shù)據(jù)庫(kù)的表類(lèi)型參數(shù)傳遞的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!


網(wǎng)站題目:C#下實(shí)現(xiàn)SQLServer2008數(shù)據(jù)庫(kù)的表類(lèi)型參數(shù)傳遞
本文網(wǎng)址:http://www.dlmjj.cn/article/dhidjdc.html