【问题标题】:Loading DataTable into SP将 DataTable 加载到 SP
【发布时间】:2009-07-08 16:51:17
【问题描述】:

我有 SQL Server 2008 和 VS 2008 Pro。我正在用 C# 编码。我接受来自客户的文本输入文件,并将这些数据解析到我的 C# aspx.cs 文件中的 DataTable 中。我知道这工作正常。所以我填充了数据表。但是现在如何将这些数据加载到 SP 中?像我可以使用动态表参数吗?还是应该改用 XML?

问题是所需列的数量可能会根据他们要插入的表而有所不同。详细信息是我让用户选择他们想要将数据附加到哪个表。为简单起见,假设: TABLE_NAME NUM_COLS A2 乙 3 C 4

我们还假设每个中的第一列是一个 INT 主键。 因此,如果他们选择表 B,那么 DataTable 将类似于: PK C1 C2 C3 1 'd' 'e' '3/10/99' 2 'g' 'h' '4/10/99'

所以现在我想将上面的这些数据附加到我的 AdventureWorks DB 的表 B 中。在 SP 定义和调用该 SP 的 C# 代码中实现这一点的最简单方法是什么? 谢谢!

【问题讨论】:

    标签: c# stored-procedures datatable visual-studio-2008-sp1


    【解决方案1】:

    我想我明白你在问什么。我将假设您的数据导入的每一行都将直接/干净地映射到数据库中的一个表。我还将假设您的应用程序逻辑可以确定每行数据应保存在何处。

    也就是说,我建议单独处理 .NET DataTable 的每一行,而不是将数据作为单个存储过程参数批量传递给 SQL,然后依赖 SQL 进行任何数据解析和表映射。

    基本上,循环遍历您的 DataTable,确定数据类型并为每一行执行适当的插入。我希望这有帮助。

    【讨论】:

    • 谢谢,本。这对我来说很有意义。您的所有假设都适用于我的代码。您是否知道任何好的在线示例,我可以查看正在实施的这种方法的模型?
    • 我建议解析每个数据行以确定“类型”。然后我会使用基本的 switch 语句或使用策略模式来处理基于行“类型”的数据更新。基本上,每种情况都会执行不同的 SQL 例程。如果您想了解更多关于策略模式的信息,请从 Jeremy Miller 的文章开始:codebetter.com/blogs/jeremy.miller/archive/2006/04/11/…。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2017-06-01
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多