如何使用foreach循环更新数据库中的行?

莱昂科

我试图遍历 Order 表中的所有订单,并在调用此函数时更新每个订单的交付状态。

public void DateCheck()
        {
            if (sqlcon.State == ConnectionState.Closed)
            {
                sqlcon.Open();
            }
            SqlCommand cmd = new SqlCommand("SELECT * FROM Orders", sqlcon);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);

            foreach (DataRow row in dt.Rows)
            {
                SqlCommand update = new SqlCommand("UPDATE Orders SET D_Status = @D_Status", sqlcon);
                string deliverytype = row["D_Type"].ToString();
                DateTime orderdate = DateTime.ParseExact(row["O_Date"].ToString(), "dd/MM/yyyy", null);
                DateTime deliverydate = new DateTime(); 

                if (deliverytype == "Standard") 
                {
                    deliverydate = orderdate.AddDays(7);
                }
                else if (deliverytype == "Express") 
                {
                    deliverydate = orderdate.AddDays(5);
                }
                else if (deliverytype == "One-Day") 
                {
                    deliverydate = orderdate.AddDays(1);
                }

                if (DateTime.Now >= deliverydate)
                {
                    update.Parameters.AddWithValue("@D_Status", "Delivered");
                    update.ExecuteNonQuery();
                }
                else if (DateTime.Now >= deliverydate)
                {
                    update.Parameters.AddWithValue("@D_Status", "Undelivered");
                    update.ExecuteNonQuery();
                }
            }
        }

但是,它将所有状态更新为“已交付”,即使比较下面的代码给我“已交付”和“未交付”。

(DateTime.Now >= deliverydate)

有谁知道代码哪里出错了?如果是这样,请详细说明以帮助我更好地理解我的错误。

史蒂夫

这条线

DateTime deliveryDate = new DateTime();

创建一个 deliveryDate 等于“01/01/0001 00:00:00”,当然添加 7,5 或 1 天不会给你一个有意义的日期来与 DateTime.Now 进行比较。

初始化 deliveryDate 变量的逻辑不清楚,但您可能需要使用 orderDate 对其进行初始化

DateTime deliverydate = orderDate; 

正如其他人在他们的评论中所说,没有 WHERE 条件的 UPDATE 命令更新表中的所有记录。同样,您需要在这里进行某种初始化。可能,因为您使用 SELECT * FROM 语法,检索到的记录还包含记录的主键,因此您可以使用以下方法调整查询:

string cmdText = "UPDATE Orders SET D_Status = @D_Status WHERE OrderID = @id"
SqlCommand update = new SqlCommand(cmdText, sqlcon);
update.Parameters.AddWithValue("@id", Convert.ToInt32(row["OrderId"]));
.....

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Python更新SQLite数据库中的行

来自分类Dev

如何使用生产数据库中的更改定期更新我的本地数据库

来自分类Dev

如何使用foreach从数据库表中获取数据-

来自分类Dev

如何使用Android sqlite数据库更新一行中的多列?

来自分类Dev

使用jQuery删除/更新数据库中的行

来自分类Dev

EF-更新数据库中的多行而不使用foreach循环

来自分类Dev

如何使用AngularJS更新/编辑数据库中的数据

来自分类Dev

如何使用LINQ更新数据库中的记录?

来自分类Dev

循环中的update_or_create仅更新/创建数据库中的一行

来自分类Dev

如何使用DataRow更新数据库?

来自分类Dev

如何使用AND条件更新SQLite数据库中的数据?

来自分类Dev

如何使用HQL替换Hive数据库中的行

来自分类Dev

如何使用NHibernate更新数据库中的版本列

来自分类Dev

如何使用linq更新数据库中的数据

来自分类Dev

使用循环更新数据库表

来自分类Dev

使用foreach循环上传多张图片并插入数据库

来自分类Dev

无法更新数据库中的行

来自分类Dev

使用Foreach循环将数据插入70个字段长的数据库中

来自分类Dev

如何使用LINQ更新数据库中的记录?

来自分类Dev

Foreach循环仅更新一个数据库行

来自分类Dev

当行/列值在数据库中更改时,如何在for循环中使用break-continue?

来自分类Dev

如何在for循环中更新数据库?

来自分类Dev

如何使用php更新数据库中的数据

来自分类Dev

如何使用foreach插入数据库?

来自分类Dev

用 PHP 中的 1000 行比较循环(foreach)和查询数据库 mysql 之间的性能?

来自分类Dev

在 PHP 中,如何在 foreach 循环中播放数据库中的音频?

来自分类Dev

Foreach 循环更新每个数据库值

来自分类Dev

如何使用ajax更新数据库中的记录并在单击按钮时删除表行?

来自分类Dev

如何使用for循环插入数据库

Related 相关文章

  1. 1

    使用Python更新SQLite数据库中的行

  2. 2

    如何使用生产数据库中的更改定期更新我的本地数据库

  3. 3

    如何使用foreach从数据库表中获取数据-

  4. 4

    如何使用Android sqlite数据库更新一行中的多列?

  5. 5

    使用jQuery删除/更新数据库中的行

  6. 6

    EF-更新数据库中的多行而不使用foreach循环

  7. 7

    如何使用AngularJS更新/编辑数据库中的数据

  8. 8

    如何使用LINQ更新数据库中的记录?

  9. 9

    循环中的update_or_create仅更新/创建数据库中的一行

  10. 10

    如何使用DataRow更新数据库?

  11. 11

    如何使用AND条件更新SQLite数据库中的数据?

  12. 12

    如何使用HQL替换Hive数据库中的行

  13. 13

    如何使用NHibernate更新数据库中的版本列

  14. 14

    如何使用linq更新数据库中的数据

  15. 15

    使用循环更新数据库表

  16. 16

    使用foreach循环上传多张图片并插入数据库

  17. 17

    无法更新数据库中的行

  18. 18

    使用Foreach循环将数据插入70个字段长的数据库中

  19. 19

    如何使用LINQ更新数据库中的记录?

  20. 20

    Foreach循环仅更新一个数据库行

  21. 21

    当行/列值在数据库中更改时,如何在for循环中使用break-continue?

  22. 22

    如何在for循环中更新数据库?

  23. 23

    如何使用php更新数据库中的数据

  24. 24

    如何使用foreach插入数据库?

  25. 25

    用 PHP 中的 1000 行比较循环(foreach)和查询数据库 mysql 之间的性能?

  26. 26

    在 PHP 中,如何在 foreach 循环中播放数据库中的音频?

  27. 27

    Foreach 循环更新每个数据库值

  28. 28

    如何使用ajax更新数据库中的记录并在单击按钮时删除表行?

  29. 29

    如何使用for循环插入数据库

热门标签

归档