我有这个代码,可以将数据从datagridview插入数据库
for (int i = 0; i < ADODB.Rows.Count - 1; i++)
{
SqlCommand cmd = new SqlCommand("INSERT INTO Employee VALUES(@Team, @SIC, @EID,@EmployeeName,@Username,@Password,@Designation,@Department,@Email,@HireDate,@TakenAL,@Status)", con);
cmd.Parameters.AddWithValue("@Team", ADODB.Rows[i].Cells[0].Value);
cmd.Parameters.AddWithValue("@SIC", ADODB.Rows[i].Cells[1].Value);
cmd.Parameters.AddWithValue("@EID", ADODB.Rows[i].Cells[2].Value);
cmd.Parameters.AddWithValue("@EmployeeName", ADODB.Rows[i].Cells[3].Value);
cmd.Parameters.AddWithValue("@Username", ADODB.Rows[i].Cells[4].Value);
cmd.Parameters.AddWithValue("@Password", ADODB.Rows[i].Cells[5].Value);
cmd.Parameters.AddWithValue("@Designation", ADODB.Rows[i].Cells[6].Value);
cmd.Parameters.AddWithValue("@Department", ADODB.Rows[i].Cells[7].Value);
cmd.Parameters.AddWithValue("@Email", ADODB.Rows[i].Cells[8].Value);
cmd.Parameters.AddWithValue("@HireDate", ADODB.Rows[i].Cells[9].Value);
cmd.Parameters.AddWithValue("@TakenAL", ADODB.Rows[i].Cells[10].Value);
cmd.Parameters.AddWithValue("@Status", ADODB.Rows[i].Cells[11].Value);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
我想问一下,如果我的datagridview中有12列,但我的数据库有13列。由于添加的内容不同,它会提示错误。我该如何解决这个问题? 提前致谢
答案 0 :(得分:0)
使用列的名称引用,即
cmd.Parameters.AddWithValue("@Team", ADODB.Rows[i].Cells["Team"].Value);
cmd.Parameters.AddWithValue("@SIC", ADODB.Rows[i].Cells["SIC"].Value);
cmd.Parameters.AddWithValue("@EID", ADODB.Rows[i].Cells["EID"].Value);
从数据库加载数据时,列将从数据库列中接收其名称。另一种方法是通过VS中的GUI或通过代码设置和命名列,即:
DataGridView1.Column[2].Name = "EID"
如果您首先在GUI或代码中设计datagridview的列方案,请确保使用
DataGridView1.AutoGenerateColumns = False
并且在使用DataPropertyName:
加载数据时使用该名称引用DataGridView1.Column[2].DataPropertyName = "EID"