C#下实现SQL Server 2008数据库的表类型参数传递

数据库 SQL Server
本文我们以一个实例介绍了C#下实现SQL Server 2008数据库的表类型参数传递的相关知识,并给出了该操作过程的详细的代码,希望能够对您有所帮助。

C#下实现SQL Server 2008数据库的表类型参数传递的相关知识是本文我们主要要介绍的内容,在学习SQL Server 2008的过程中,突然发现SQL Server支持自定义表类型,我们可以轻松的将一个SQL Server 2008表类型作为参数传递给存储过程。

我们通过ADO.Net在C#下演示这项SQL Server 2008的新功能。

首先,我们在SQL Server 2008下创建一个示例数据库名为Test,再在该数据库下创建一个名为User的表,结构如下:

C#下实现SQL Server 2008数据库的表类型参数传递

再在Test数据库下创建一个自定义表类型,取名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. )   

然后,创建一个存储过程,取名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  

C#下实现SQL Server 2008数据库的表类型参数传递

启动Visual Studio 2008,创建一个默认的窗体应用程序后,我们需要先在内存中创建一个数据库表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执行刚才我们创建的Test数据库存储过程InsertUserInfo,并传递我们在内存中创建的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.        }   

C#下实现SQL Server 2008数据库的表类型参数传递

通过上面的示例,我们可以在程序客户端先创建好要传递的表类型数据,然后传递给存储过程,而存储过程则将SQL Server 2008表类型参数中的记录一次性的添加到了数据库实体表中,这种操作在需要传递给存储过程数组形式的参数时非常非常方便。

该示例在Visual Studio 2008 SP1 + SQL Server 2008 +Windows XP SP3下编译调试通过。

这样,就在C#下实现了SQL Server 2008表类型参数传递。

关于C#下实现SQL Server 2008数据库的表类型参数传递的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. SQL Server 2005导入Oracle 10g的C#源码
  2. SQL Server 2008快速清理日志文件的代码
  3. SQL Server 2008数据库中CDC的功能使用及说明
  4. SQL Server 2008阻止保存要求重新创建表的更改的问题
  5. SQL Server数据库row_number() over() 来自动产生行号
责任编辑:赵鹏 来源: CSDN博客
相关推荐

2009-08-06 16:32:49

SQL Server

2009-09-04 17:29:01

C#创建SQL Ser

2009-08-03 14:17:18

C#连接AccessC#连接SQL Ser

2010-08-27 09:59:51

SQL Server

2011-09-01 14:00:11

SQL Server 存储过程显示表结构

2024-10-30 08:15:18

2011-08-11 14:23:57

SQL Server 索引分区

2009-03-19 09:30:59

2010-09-10 13:37:30

表分区SQL Server

2009-08-28 15:57:56

C#线程传递参数

2011-08-09 17:24:21

SQL Server 数据库日志

2011-08-16 18:11:13

SQL Server 手动提交

2011-08-25 13:41:50

SQL Server 变更跟踪

2009-08-07 16:19:00

C#下数据库编程

2009-08-07 16:19:00

C#下数据库编程

2010-07-22 14:46:41

SQL Server

2011-09-07 15:11:31

SQL Server同步

2010-12-17 09:11:41

SQL Server

2009-04-10 15:37:48

SQL Server2镜像实施

2010-07-07 14:24:42

SQL Server
点赞
收藏

51CTO技术栈公众号