将值从DataGridView插入到Mysql表中 [英] Inserting Values from DataGridView to Mysql Table

查看:74
本文介绍了将值从DataGridView插入到Mysql表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我尝试过多次但没有得到正确的结果。

我有一个DataGridView和Button,



我有一个包含5列的表,在我的Windows应用程序中,我将提供3个列值和2个列值,我想从datagridview获取并插入到mysql表中。



在运行时,我会在我点击按钮时向datagridview插入值,我想从datagridview获取所有值到字符串或字符串数​​组。然后我将插入mysl表。< / pre>



Hi All,
I tried with many cases but not getting proper result.
I have one DataGridView and Button,

I have one table which contains 5 columns, In my windows application i will give 3 column values and 2 column values i want to get from datagridview and insert to mysql table.

In the run time, i will insert values to datagridview when i clicked on the button i want to get all values from datagridview to string or string array. Then i will insert to mysl table.</pre>

con = new MySqlConnection(str);
           try
           {
               con.Open();
               MySqlCommand cmd = con.CreateCommand();
               //cmd.CommandText = "insert into balance values" + "(@i1,@i2,@i3,@i4,@i5)";
               //cmd.Parameters.Add("@i1", MySqlDbType.VarChar);
               //cmd.Parameters.Add("@i2", MySqlDbType.VarChar);
               //cmd.Parameters.Add("@i3", MySqlDbType.VarChar);
               //cmd.Parameters.Add("@i4", MySqlDbType.Float);
               //cmd.Parameters.Add("@i5", MySqlDbType.VarChar);
               //cmd.Parameters["@i1"].Value = busname;
               //cmd.Parameters["@i2"].Value = cusname;
               //cmd.Parameters["@i3"].Value = this.dataGridView1[0, 0].Value;
               //cmd.Parameters["@i4"].Value = this.dataGridView1[1, 0].Value;
               //cmd.Parameters["@i5"].Value = "345";
               //cmd.ExecuteNonQuery();
               string[] st = new string[this.dataGridView1.Rows.Count];

               for (int i = 0; i <= this.dataGridView1.Rows.Count; i++)
               {
                   cmd.CommandText = "insert into balance values" + "(@p1,@p2,@p3,@p4,@p5)";
                   cmd.Parameters.Add("@p1", MySqlDbType.VarChar);
                   cmd.Parameters.Add("@p2", MySqlDbType.VarChar);
                   cmd.Parameters.Add("@p3", MySqlDbType.VarChar);
                   cmd.Parameters.Add("@p4", MySqlDbType.Float);
                   cmd.Parameters.Add("@p5", MySqlDbType.VarChar);
                   cmd.Parameters["@p1"].Value = busname;
                   cmd.Parameters["@p2"].Value = cusname;
                   cmd.Parameters["@p3"].Value = this.dataGridView1[0, i].Value;
                   cmd.Parameters["@p4"].Value = this.dataGridView1[1, i].Value;
                   cmd.Parameters["@p5"].Value = "345";
                   cmd.ExecuteNonQuery();

               }





如果我在for循环中使用insert选项那么我得到了错误为



参数'@ p1'已经定义。同样的错误'@ p2','@ p5'也。



我试过没有使用for循环,我评论说。这工作正常。它也插入表中。但是当我使用for循环时,我知道什么是错的。



If i use the insert option within the for loop then i am getting error as

Parameter '@p1' has already been defined. same error for '@p2', '@p5' also.

I tried without using the for loop, which i commented. That is working fine. It is inserting into table also. But i dnt know whats wrong when i am using with the for loop.

推荐答案

private void button1_Click(object sender, EventArgs e)
      {
          con = new MySqlConnection(str);
          try
          {
              con.Open();
              MySqlCommand cmd = con.CreateCommand();
              cmd.CommandText = "insert into balance values" + "(@i1,@i2,@i3,@i4,@i5)";
              cmd.Parameters.Add("@i1", MySqlDbType.VarChar);
              cmd.Parameters.Add("@i2", MySqlDbType.VarChar);
              cmd.Parameters.Add("@i3", MySqlDbType.VarChar);
              cmd.Parameters.Add("@i4", MySqlDbType.Float);
              cmd.Parameters.Add("@i5", MySqlDbType.VarChar);
              cmd.Parameters["@i1"].Value = busname;
              cmd.Parameters["@i2"].Value = cusname;
              cmd.Parameters["@i5"].Value = "345";

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

                  cmd.Parameters["@i3"].Value = this.dataGridView1[0,i].Value;
                  cmd.Parameters["@i4"].Value = this.dataGridView1[1,i].Value;
                  cmd.ExecuteNonQuery();
              }
              this.Close();
          }
          catch (MySqlException er)
          {
              MessageBox.Show("Error:" + er.ToString());
          }
      }





最后我得到了预期的输出。问题是,在运行时DataGridView中,当我们给出1行的值时,它将自动在Row.Count属性中占用另一行。所以我在for循环中给了this.dataGridView1.Rows.Count-1。



Finally i got expected output for this. The problem is, in DataGridView at the run time when we give values for 1 row then it will automatically takes another row in Row.Count property. So i gave "this.dataGridView1.Rows.Count-1" in for loop.


这篇关于将值从DataGridView插入到Mysql表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆