在数据库中插入信息时出现以下问题
public void Insertar()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=BD-DLLO-SP2016;Initial Catalog=GobernacionCesar;Integrated Security=True";
con.Open();
string query = "INSERT INTO Liquidacion (IdLiquidacion, IdPeriodo, FechaGeneracion, Usuario) VALUES(@IdLiquidacion, @IdPeriodo, @FechaGeneracion, @Usuario)";
SqlCommand com1 = new SqlCommand(query, con);
foreach (GridViewRow gridRow in GridView4.Rows)
{
Iniciar();
com1.Parameters.AddWithValue("@IdLiquidacion", A);
com1.Parameters.AddWithValue("@IdPeriodo", cell);
com1.Parameters.AddWithValue("@FechaGeneracion", DateTime.Now.ToString());
com1.Parameters.AddWithValue("@Usuario", gridRow.Cells[0].Text);
com1.ExecuteNonQuery();
}
con.Close();
return;
}
答案 0 :(得分:0)
移动命令
SqlCommand com1 = new SqlCommand(query, con);
到循环的开头:
foreach (GridViewRow gridRow in GridView4.Rows)
{
SqlCommand com1 = new SqlCommand(query, con);
....
}
答案 1 :(得分:0)
你应该
像这样:
SqlCommand com1 = new SqlCommand(query, con);
// define parameters - you need to adapt the datatypes - I was only guessing
com1.Parameters.Add("@IdLiquidacion", SqlDbType.Int);
com1.Parameters.Add("@IdPeriodo", SqlDbType.VarChar, 50);
com1.Parameters.Add("@FechaGeneracion", SqlDbType.DateTime);
com1.Parameters.Add("@Usuario", SqlDbType.VarChar, 100);
foreach (GridViewRow gridRow in GridView4.Rows)
{
Iniciar();
// inside the loop, only SET the values
com1.Parameters["@IdLiquidacion"].Value = A;
com1.Parameters["@IdPeriodo"].Value = cell;
com1.Parameters["@FechaGeneracion"].Value = DateTime.Now;
com1.Parameters["@Usuario"].Value = gridRow.Cells[0].Text;
com1.ExecuteNonQuery();
}
答案 2 :(得分:-1)
您正在循环中添加参数。如果在添加之前清除它们,这应该可行。