自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#下SQL Server 2008表類型參數(shù)傳遞

開發(fā) 后端
本文通過ADO.Net在C#下演示SQL Server 2008的新功能。

在學(xué)習(xí)SQL Server 2008的過程中,突然發(fā)現(xiàn)SQL Server支持自定義表類型,我們可以輕松的將一個SQL Server 2008表類型作為參數(shù)傳遞給存儲過程。

我們通過ADO.Net在C#下演示這項SQL Server 2008的新功能。

首先,我們在SQL Server 2008下創(chuàng)建一個示例數(shù)據(jù)庫名為Test,再在該數(shù)據(jù)庫下創(chuàng)建一個名為User的表,結(jié)構(gòu)如下:

在該數(shù)據(jù)庫下創(chuàng)建一個名為User的表 

再在Test數(shù)據(jù)庫下創(chuàng)建一個自定義表類型,取名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  
  6. )   

然后,創(chuàng)建一個存儲過程,取名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  

創(chuàng)建一個存儲過程,取名InsertUserInfo 

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

  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;  
  11. }  

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

  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.        }   

通過SqlCommand執(zhí)行剛才我們創(chuàng)建的Test數(shù)據(jù)庫存儲過程InsertUserInfo 

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

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

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

【編輯推薦】

  1. C# Thread類的應(yīng) 用
  2. C#線程:BeginInvoke和EndInvoke方法
  3. 學(xué)習(xí)C#:Attribute與Property
  4. C#編碼標(biāo)準(zhǔn)66條
  5. C#委托事件及自定義事件的處理
責(zé)任編輯:book05 來源: csdn
相關(guān)推薦

2011-09-01 16:01:44

C#SQL Server 表類型參數(shù)傳遞

2009-08-28 15:57:56

C#線程傳遞參數(shù)

2009-08-27 17:47:18

C#匿名方法作為參數(shù)傳

2009-08-06 18:15:13

C# SQL Serv

2009-08-24 15:41:50

C#連接SQL Ser

2009-08-19 15:59:24

C#參數(shù)類型

2009-08-24 14:51:25

C# 泛型泛型類型

2009-09-07 03:23:40

C# Main方法

2010-09-13 10:21:26

sql server2

2009-08-20 09:52:31

C#參數(shù)類型

2010-12-06 09:26:23

SQL Server

2011-02-21 13:06:34

SQL Servr 2

2011-02-21 13:06:42

Microsoft S

2009-08-17 13:26:20

C#調(diào)用Windows

2012-02-21 14:04:15

Java

2009-08-17 18:30:29

C# SQL Serv

2009-08-24 15:02:05

C# 類型

2009-04-16 17:55:15

擴(kuò)展熱插拔SQL Server

2009-04-16 17:55:55

SQL Server 空間數(shù)據(jù).NET

2010-09-13 09:58:17

SQL Server2
點贊
收藏

51CTO技術(shù)棧公眾號