【问题标题】:How to add more than one record adding in to database from datagridview c#如何从datagridview c#中添加多条记录添加到数据库中
【发布时间】:2017-05-03 14:29:39
【问题描述】:

我尝试了下面的代码,但我可以添加一条仅添加到 mysql 数据库中的行记录。我输入了三行记录,但只添加了一行记录。有什么问题?

for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {

      MySqlCommand cmd = new MySqlCommand();
      cmd.Connection = con;

      cmd.CommandText = "insert into salesproductnew(salesid,productname,qty,price,grosstotal)values(@salesid,@productname,@qty,@price,@grosstotal)";


      cmd.Parameters.AddWithValue("@salesid", lbinvoice.Text);
      cmd.Parameters.AddWithValue("@productname", dataGridView1.Rows[i].Cells[2].Value);
      cmd.Parameters.AddWithValue("@qty", dataGridView1.Rows[i].Cells[3].Value);
      cmd.Parameters.AddWithValue("@price", dataGridView1.Rows[i].Cells[4].Value);
      cmd.Parameters.AddWithValue("@grosstotal", dataGridView1.Rows[i].Cells[5].Value);

      con.Open();
      cmd.ExecuteNonQuery();

      MessageBox.Show("Record added .............");
      con.Close();

    }

【问题讨论】:

  • 用try..catch包装代码,看看有没有异常
  • 我没有例外。没有错误。只有一条记录只添加到数据库中发生了什么其他记录请修复此问题
  • 有人帮帮我吗?
  • 你看到多少个消息框?
  • 我试过不行

标签: c#


【解决方案1】:

您不是在重置cmd 的参数,而是在每个循环中添加新参数。可能不是直接答案,但试试这个

MySqlCommand cmd = new MySqlCommand();
cmd.Connection = con;
con.Open();
cmd.CommandText = "insert into salesproductnew(salesid,productname,qty,price,grosstotal)values(@salesid,@productname,@qty,@price,@grosstotal)";
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
  cmd.Parameters.Clear();
  cmd.Parameters.AddWithValue("@salesid", lbinvoice.Text);
  cmd.Parameters.AddWithValue("@productname", dataGridView1.Rows[i].Cells[2].Value);
  cmd.Parameters.AddWithValue("@qty", dataGridView1.Rows[i].Cells[3].Value);
  cmd.Parameters.AddWithValue("@price", dataGridView1.Rows[i].Cells[4].Value);
  cmd.Parameters.AddWithValue("@grosstotal", dataGridView1.Rows[i].Cells[5].Value);

  cmd.ExecuteNonQuery();

}

  MessageBox.Show("Record added .............");
  con.Close();

顺便说一句,您不必清除参数。请参阅this SO 了解更多信息。

【讨论】:

  • 不是错误,我可以在数据库中添加一行记录。我无法添加不止一条记录...请帮助我
  • salesid 是唯一键还是主键?您应该收到一些错误。分配var recordsAdded = cmd.ExecuteNonQuery();并尝试调试它。
  • salesid 唯一密钥先生。 var 记录 = cmdadd.ExecuteNonQuery();我试过只添加一行记录
  • lbinvoice.Textfor 循环内没有变化。您不能插入具有相同唯一键的多行。添加另一个字段作为主键(如果不存在)并将salesid标记为非唯一。
  • 那么如何编写这段代码。能不能修改一下代码写出来
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多