【问题标题】:how to loop through each row in datatable and insert data in mySQL如何遍历数据表中的每一行并在mySQL中插入数据
【发布时间】:2013-05-20 22:32:12
【问题描述】:

我有这段代码循环遍历 datagridview 中的每一行,但我不知道使用数据表的等效代码是什么。我尝试使用datarow 而不是DataGridViewRow,但我不知道如何像在这段代码中那样获取每一行中的数据。那么我将如何获取数据表中每一行的数据呢?

using (MySqlCommand cmd = new MySqlCommand(query_1, con))
{
foreach (DataGridViewRow dr in dataGridView2.Rows)
{
if (Convert.ToInt32(dr.Cells["quantity"].Value) > 0)
{
cmd.Parameters.AddWithValue("@product", dr.Cells["product_name"].Value);
cmd.Parameters.AddWithValue("@variant", dr.Cells["variant_name"].Value);
cmd.Parameters.AddWithValue("@size", dr.Cells["size"].Value);
cmd.Parameters.Add("@qty", MySqlDbType.Int32, 8).Value = dr.Cells["quantity"].Value;
cmd.Parameters.AddWithValue("@ID", txtboxID.Text);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}

【问题讨论】:

    标签: c# mysql datatable datarow


    【解决方案1】:

    使用这样的语法

    dr.Field<string>("product_name");
    

    需要引用System.Data.DataSetExtensions.dll

    using (MySqlCommand cmd = new MySqlCommand(query_1, con))
    {
        cmd.Parameters.AddWithValue("@product", "");
        cmd.Parameters.AddWithValue("@variant", "");
        cmd.Parameters.AddWithValue("@size", 0);
        cmd.Parameters.Add("@qty", MySqlDbType.Int32, 8).Value = 0:
        cmd.Parameters.AddWithValue("@ID", txtboxID.Text);
        foreach (DataRow dr in yourTable.Rows)
        {
             if (dr.Field<int>("quantity") > 0)
             {
                 cmd.Parameters["@product"].Value = dr.Field<string>("product_name");
                 cmd.Parameters["@variant"].Value = dr.Field<string>("variant_name");
                 cmd.Parameters["@size".Value = dr.Field<int>("size");
                 cmd.Parameters["@qty"].Value = dr.Field<int>("quantity");
                 cmd.ExecuteNonQuery();
                 // no need to clear, reuse the same set of parameters
                 //  cmd.Parameters.Clear();
              }
         }
    }
    

    【讨论】:

    • Ahmm...如果我这样做可以吗cmd.Parameters.AddWithValue("@product", row["product_name"]);??
    • 是的,但是您需要转换为适当的数据类型,还请查看更新的答案以了解避免在每个循环中重新创建参数的更改
    • 好的,我尝试添加引用System.Data.DataSetExtensions.dll,但在列表中找不到它。我在哪里可以找到它?
    • 您使用的是哪个版本的 DotNet 框架?但是,右键单击项目的 References 并选择 Add Reference,单击 Assembly 并搜索 System.Data.DataSetExtensions。然后双击文件并确认对话框
    • 即使没有添加您所说的参考,我也尝试运行该应用程序。它返回一个错误说Specified cast is not valid??你认为这是原因吗?
    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多