gpt4 book ai didi

c# - 如何使用 ADO.NET 更新大表

转载 作者:行者123 更新时间:2023-11-30 12:18:58 25 4
gpt4 key购买 nike

好的,这是我必须解决的问题。我需要用 C# 编写一个方法来修改 SQL Server 2008 中的表。该表可能包含数百万条记录。修改包括通过添加新列来更改表格,然后为表格中的每一行计算和设置新字段的值。

添加列不是问题。问题在于有效地设置值。出于明显的原因,我不想将整个表读入 DataTable 然后更新和提交。我在想我想使用游标遍历表中的行并逐行更新它们。我没有进行大量的 ADO.NET 开发,但据我所知,只支持只读服务器端 (firehose) 游标。

那么做这样的事情的正确方法是什么(最好使用 C# 中的一些示例代码)?不允许对数据库进行存储过程或其他此类修改。

最佳答案

吉福迪,

这是一个使用 NerdDinner 的例子数据库和一些 SQLConnection、SQLCommand 和 SQLDataReader 对象。它向 Dinners 表中的每个事件日期添加一天。

using System;
using System.Data.SqlClient;

namespace NerdDinner
{
public class Class1
{
public void Execute()
{
SqlConnection readerConnection = new SqlConnection(Properties.Settings.Default.ConnectionString);
readerConnection.Open();

SqlCommand cmd = new SqlCommand("SELECT DinnerID, EventDate FROM Dinners", readerConnection);
SqlDataReader reader = cmd.ExecuteReader();

SqlConnection writerConnection = new SqlConnection(Properties.Settings.Default.ConnectionString);
writerConnection.Open();

SqlCommand writerCommand = new SqlCommand("", writerConnection);

while (reader.Read())
{
int DinnerID = reader.GetInt32(0);
DateTime EventDate = reader.GetDateTime(1);

writerCommand.CommandText = "UPDATE Dinners SET EventDate = '" + EventDate.AddDays(1).ToString() + "' WHERE DinnerID = " + DinnerID.ToString();
writerCommand.ExecuteNonQuery();
}
}
}
}

关于c# - 如何使用 ADO.NET 更新大表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/908875/

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