gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:49:12 26 4
gpt4 key购买 nike

我正在尝试编写一个 C# 程序来创建一个完整的表以发送回 SQL Server 存储过程。

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

我尝试使用 msdn 指南,但尽管按照编译器的建议添加了对 microsoft.sqlserver.smo、microsoft.sqlserver.connectioninfo、microsoft.sqlserver.management.sdk.sfc 的引用,但仍出现错误。错误是:

Set parent failed for 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();

我只是希望能够构建一个用户定义的数据表,我在这里发现的唯一相关问题只涉及在 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);
}

有人可以用简单的语言告诉我如何在我的 C# 程序中创建用户定义的表类型吗?

最佳答案

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

CREATE TYPE [dbo].[userdefinedtabletype] AS TABLE(
[ID] [varchar](255) NULL,
[Name] [varchar](255) NULL
)

然后在您的 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);

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

关于c# - 在 c# 中创建一个用户定义的表类型以在 sql server 存储过程中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com