【问题标题】:ASP.net C# -- Merging a dataset that came from MySQL into a SQL Server 2008 tableASP.net C#——将来自 MySQL 的数据集合并到 SQL Server 2008 表中
【发布时间】:2011-06-17 10:56:55
【问题描述】:

我将 MySQL 数据库表中的数据加载到 DataSet

例子:

MySqlConnection myConnection = new MySqlConnection(/*connection string*/);
MySqlCommand collectDataCommand = new MySqlCommand(/*Select comman*/, myConnection);

MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(collectDataCommand);
myConnection.Open();

DataSet tempData = new DataSet();
myDataAdapter.Fill(tempData);

现在我在 DataSet 中有此信息,我需要将 MERGE(或 UPSERT)此信息放入 SQL Server 2008 数据库中的匹配表中。

这样做最有效的方法是什么?这甚至可能吗?

非常感谢!!!

【问题讨论】:

    标签: mysql sql-server-2008 merge upsert


    【解决方案1】:

    最有效的方法是使用 SQL Server 2008 支持的Table-Valued Parameters (TVP)

    SQL Server side 和C# 客户端(参数将是SqlDbType.Structured)上都很容易实现。基本上,步骤是:

    • 在您的数据库中定义一个新的“表类型”
    • 在您的存储过程中添加一个参数,具有您刚刚定义的类型
    • 在您的客户端 C# 代码中添加相应的参数

    以下是相关 MSDN 文章的摘录:

    “表值参数提供了一种将多行数据从客户端应用程序编组到 SQL Server 的简便方法,无需多次往返或特殊的服务器端逻辑来处理数据。您可以使用表值参数来封装在客户端应用程序中的数据行,并在单个参数化命令中将数据发送到服务器。传入的数据行存储在表变量中,然后可以使用 Transact-SQL 对其进行操作。

    "可以使用标准 Transact-SQL SELECT 语句访问表值参数中的列值。表值参数是强类型的,并且它们的结构是自动验证的。表值参数的大小仅受服务器内存限制。 "

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多