我尝试了很多案例,但没有得到正确的结果。
我有一个 DataGridView 和 Button,
我有一个包含 5 列的表,在我的 windows 应用程序中,我将给出 3 个列值和 2 个列值,我想从 datagridview 获取并插入到 mysql 表中。
在运行时,当我单击按钮时,我将向 datagridview 插入值,我想将所有值从 datagridview 获取到字符串或字符串数组。然后我将插入到 mysql 表中
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 循环中使用插入选项,那么我会收到错误消息
Parameter '@p1' has already been defined. same error for '@p2', '@p5' also.
我尝试不使用我评论过的 for 循环。那工作正常。它也插入到表中。但是当我使用 for 循环时,我不知道出了什么问题。