C# 将所有datagridview值插入mysql数据库
我有一个向datagridview添加数据的按钮,我想将所有添加的数据插入datagridview到mysql数据库,但它只插入1行数据 这是表格的结构:C# 将所有datagridview值插入mysql数据库,c#,mysql,sql,datagridview,sql-insert,C#,Mysql,Sql,Datagridview,Sql Insert,我有一个向datagridview添加数据的按钮,我想将所有添加的数据插入datagridview到mysql数据库,但它只插入1行数据 这是表格的结构: //Construct Columns dataGridView2.ColumnCount = 7; dataGridView2.Columns[0].Name = "Pig ID"; dataGridView2.Columns[1].Name = "Weight";
//Construct Columns
dataGridView2.ColumnCount = 7;
dataGridView2.Columns[0].Name = "Pig ID";
dataGridView2.Columns[1].Name = "Weight";
dataGridView2.Columns[2].Name = "Price";
dataGridView2.Columns[3].Name = "Flavor";
dataGridView2.Columns[4].Name = "F-Fee";
dataGridView2.Columns[5].Name = "Internal";
dataGridView2.Columns[6].Name = "I-Fee";
这是我插入数据的代码:
string constring = "datasource=localhost;port=3306;username=root";
string query = "insert into maasinhondb.orderdetails_table (order_id, pig_id, weight, resell_price, fname, fprice, iname, iprice) values ('" + this.txtOID.Text + "',@pig_id,@weight,@resell_price,@fname,@fprice,@iname,@iprice);";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(query, conDataBase);
MySqlDataReader myReader;
for (int i = 0; i < dataGridView2.Rows.Count; i++)
try
{
cmdDataBase.Parameters.AddWithValue("@pig_id", dataGridView2.Rows[i].Cells[0].Value);
cmdDataBase.Parameters.AddWithValue("@weight", dataGridView2.Rows[i].Cells[1].Value);
cmdDataBase.Parameters.AddWithValue("@resell_price", dataGridView2.Rows[i].Cells[2].Value);
cmdDataBase.Parameters.AddWithValue("@fname", dataGridView2.Rows[i].Cells[3].Value);
cmdDataBase.Parameters.AddWithValue("@fprice", dataGridView2.Rows[i].Cells[4].Value);
cmdDataBase.Parameters.AddWithValue("@iname", dataGridView2.Rows[i].Cells[5].Value);
cmdDataBase.Parameters.AddWithValue("@iprice", dataGridView2.Rows[i].Cells[6].Value);
conDataBase.Open();
myReader = cmdDataBase.ExecuteReader();
MessageBox.Show("Information Successfully Saved", "Confirmation Message", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
string constring=“datasource=localhost;port=3306;username=root”;
string query=“insert into maasinhondb.orderdetails_表(order_id,pig_id,weight,relail_price,fname,fprice,iname,iprice)值(“+this.txtOID.Text+”,@pig_id,@weight,@relail_price,@fname,@fprice,@iname,@iprice);”;
MySqlConnection conDataBase=新的MySqlConnection(constring);
MySqlCommand cmdDataBase=新的MySqlCommand(查询、条件数据库);
MySqlDataReader;
对于(int i=0;i
请帮忙,我该怎么办?您可以使用
cmdDataBase.Parameters.Clear()
谢谢大家我找到了答案:
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
string constring = "datasource=localhost;port=3306;username=root";
string query = "insert into maasinhondb.orderdetails_table (order_id, pig_id, flavor_id, internal_id) values ('" + this.txtOID.Text + "', @pigid,@flavorid,@internalid);";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(query, conDataBase);
MySqlDataReader myReader;
cmdDataBase.Parameters.AddWithValue("@pigid", dataGridView2.Rows[i].Cells[0].Value);
cmdDataBase.Parameters.AddWithValue("@flavorid", dataGridView2.Rows[i].Cells[4].Value);
cmdDataBase.Parameters.AddWithValue("@internalid", dataGridView2.Rows[i].Cells[7].Value);
//cmdDataBase.Parameters.Clear();
conDataBase.Open();
myReader = cmdDataBase.ExecuteReader();
while (myReader.Read())
{
}
conDataBase.Close();
}
for(int i=0;i
cmdDataBase.Parameters.Clear()代码>如下所述,或为循环中的每个迭代创建新的MySqlCommand
(在AddWithValue(“@pig_id”…
)之前)。它可以工作错误不再存在,但与之前一样,它只插入1行数据1)MoveconDataBase.Open()代码>循环外部;2) try
最好包含for
循环;3) INSERT
不需要ExecuteReader
-使用ExecuteNonQuery
而不使用myReader.Read()
。它可以工作错误不再存在,但像以前一样,它只插入一行数据