我在C#中有一个winform应用程序允许从我的SQL数据库编辑表。 我设法打开表并编辑它们,但是当我保存数据时,所有行都被复制。 有没有办法做到这一点,但只编辑必填字段或插入添加新的字段?我尝试了更新命令,但它不起作用。
我使用的代码是:
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (!row.IsNewRow)
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO temp (data1, data2, data3, data4) VALUES(@c1,@c2,@c3,@c4)", con))
{
cmd.Parameters.AddWithValue("@C1", row.Cells[0].Value);
cmd.Parameters.AddWithValue("@C2", row.Cells[1].Value);
cmd.Parameters.AddWithValue("@C3", row.Cells[2].Value);
cmd.Parameters.AddWithValue("@C4", row.Cells[3].Value);
cmd.ExecuteNonQuery();
}
}
}
}
感谢您的帮助
答案 0 :(得分:0)
假设您的DataGridView未绑定到数据库(或者它已经包含您不想再次插入的数据库中的行),那么最好使用循环。
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO MyTable(Column1, Column2) VALUES (@C1, @C2)", con))
{
cmd.Parameters.Add(new SqlParameter("@C1", SqlDbType.VarChar));
cmd.Parameters.Add(new SqlParameter("@C2", SqlDbType.VarChar));
con.Open();
foreach (DataGridViewRow row in myDataGridView.Rows)
{
if (!row.IsNewRow)
{
cmd.Parameters["@C1"].Value = row.Cells[0].Value;
cmd.Parameters["@C2"].Value = row.Cells[1].Value;
cmd.ExecuteNonQuery();
}
}
}
}
答案 1 :(得分:0)
旧式: 使用DataSet作为DataGrid和save using a DataAdapter的数据源。
2017年的方式: 转到Entity Framework way并使用类型化对象的本机集合作为DataGrid的数据源。