2

我将数据从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);

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

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

非常感谢!!!

4

1 回答 1

0

最有效的方法是使用SQL Server 2008 支持的表值参数 (TVP)

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

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

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

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

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

于 2013-10-23T14:52:05.603 回答