【发布时间】:2013-06-25 05:37:55
【问题描述】:
下面是我编写的代码,其中我只在数据库中保存第一行值,但是当我尝试保存多行值时它会出错。我不知道如何在这段代码中使用循环以及在哪里使用循环一次在数据库中插入多行。
如何将 DataGridView 值保存到 SQL Server 数据库中?
private void button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("INSERT INTO datagrid (sr, name, email, tel_no) VALUES(@c1,@c2,@c3,@c4)", cs);
{
cmd.Parameters.Add(new SqlParameter("@C1", SqlDbType.VarChar));
cmd.Parameters.Add(new SqlParameter("@C2", SqlDbType.VarChar));
cmd.Parameters.Add(new SqlParameter("@C3", SqlDbType.VarChar));
cmd.Parameters.Add(new SqlParameter("@C4", SqlDbType.VarChar));
cs.Open();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
{
if (!row.IsNewRow)
{
cmd.Parameters["@C1"].Value = row.Cells[0].Value;
cmd.Parameters["@C2"].Value = row.Cells[1].Value;
cmd.Parameters["@C3"].Value = row.Cells[2].Value;
cmd.Parameters["@C4"].Value = row.Cells[3].Value;
cmd.ExecuteNonQuery();
}
cs.Close();
}
}
}
}
【问题讨论】:
-
错误是什么?我敢打赌它与关闭的连接有关 - 您在每个代码块的末尾关闭连接,所以它只会保存第一行,无论您有多少行。将
cs.Close();移到每个循环之外。 -
你不需要 foreach 循环。
-
@SaroopTrivedi - 如果 OP 从 DataGridView 保存多行,他们需要某种循环。
-
@Tim: 然后需要将 con.Open() 和 con.Close() 放入 If 条件。因为他试图打开 Con.open 一次并关闭它。
-
@Edper - 现在正在处理这个问题......希望从 OP 那里获得更多信息,但会继续使用现有的信息并希望他们觉得它有帮助。