如何使用c#逐个更新SQL Server表行

时间:2016-04-21 05:04:53

标签: c# sql-server

我有sql server表,带有架构

m_id ,
u_id ,
error ,
status_1 ,
status_2

目前,我正在使用查询一次更新所有行。

update [table_1] 
set status_1 = GETUTCDATE() 
where [m_id] % 2 != 0;

此查询使用m_id % 2 != 0更新所有行。

但不是这样,我想一次更新一行,也许使用C#循环。 请提出建议。

3 个答案:

答案 0 :(得分:1)

这是你可以做的,

                string cmdString = "select m_id from table_1");
                SqlCommand command = new SqlCommand(cmdString, conn);
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var m_Id = reader["m_id"];
                        if (macId != DBNull.Value)
                        {
                            cmdString = 
                            "update table_1 set last_status_update = GETUTCDATE() where [m_id] % 2 != 0 AND [m_id] ='" + m_Id + "';"

                            command = new SqlCommand(cmdString, conn);
                            command.ExecuteNonQuery();
                        }
                    }
                }

答案 1 :(得分:0)

这样的东西
Update [table_1] 
set status_1 = GETUTCDATE() 
Where [m_id] = (select top 1 m_id from table_1 order. by status_1 desc)

每次执行时都应该执行一条记录。不知道为什么你会想要...而且显然只有少数才有用。否则在tsql循环中执行它

答案 2 :(得分:0)

DECLARE @date DATETIME = GETUTCDATE()

WHILE (1=1) DO
BEGIN
  ;WITH s_cte AS (
  SELECT TOP 1 status_1 FROM table_1 WHERE [m_id] % 2 != 0 AND status_1 != @date
)
UPDATE s_cte SET status_1 = @date

  IF @@ROWCOUNT = 0 BREAK
END