在c#中创建用户定义的表类型以在sql server存储过程中使用

Any*_*ope 6 c# sql-server-2012

我正在尝试编写一个ac#program,它创建一个整表来发送回sql server存储过程.

我遇到了msdn指南但却变得非常困惑:http: //msdn.microsoft.com/en-us/library/cc879253.aspx

我尝试使用msdn指南,但是尽管按照编译器的建议添加了对microsoft.sqlserver.smo,microsoft.sqlserver.connectioninfo,microsoft.sqlserver.management.sdk.sfc的引用,但仍然出错.错误是:"为userdefinedtabletype设置父级失败".(基于msdn指南的代码片段)

Server srv = new Server();
Database db = srv.Databases["MyDatabase"];

//fails at this line
UserDefinedTableType udtt = new UserDefinedTableType(db, "TestTable");
udtt.Columns.Add(new Column(udtt, "Col1", DataType.Int));
udtt.Create();
Run Code Online (Sandbox Code Playgroud)

我只是希望能够构建一个用户定义的数据表,我在这里找到的唯一相关问题只涉及在SQL中创建用户定义的表,而不是C#.

我的SQL Server连接代码是这样的:

 DataSet ds = new DataSet("SQLDatabase");

       using (SqlConnection conn = new SqlConnection(Settings.Default.SQLConnectionString))
       {
           SqlCommand sqlComm = new SqlCommand("StoredProcedure", conn);

           sqlComm.Parameters.AddWithValue("@param", paramValue);

           sqlComm.CommandType = CommandType.StoredProcedure;

           SqlDataAdapter da = new SqlDataAdapter();
           da.SelectCommand = sqlComm;
           da.Fill(ds);
       }
Run Code Online (Sandbox Code Playgroud)

请有人用简单的语言向我展示如何在我的C#程序中创建用户定义的表类型?

希望我已经足够清楚了,先谢谢你.

Hab*_*bib 20

最简单的选择是创建一个DataTableC#代码并将其作为参数传递给您的过程.假设您已创建用户定义的表类型:

CREATE TYPE [dbo].[userdefinedtabletype] AS TABLE(
    [ID] [varchar](255) NULL,
    [Name] [varchar](255) NULL
)
Run Code Online (Sandbox Code Playgroud)

然后在你的C#代码中你会做:

DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof (string));
dt.Columns.Add("Name", typeof (string));
//populate your Datatable

SqlParameter param = new SqlParameter("@userdefinedtabletypeparameter", SqlDbType.Structured)
{
    TypeName = "dbo.userdefinedtabletype",
    Value = dt
};
sqlComm.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

请记住指定SqlDbType.Structured参数类型并指定在创建UDT时使用的名称.