将值从DataGridView插入到Mysql表中 [英] Inserting Values from DataGridView to Mysql Table
问题描述
大家好,
我尝试过多次但没有得到正确的结果。
我有一个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屋!