将不均匀数据从datagridview插入数据库c#的问题

时间:2017-09-11 01:59:25

标签: c# winforms datagridview

我有这个代码,可以将数据从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列。由于添加的内容不同,它会提示错误。我该如何解决这个问题? 提前致谢

1 个答案:

答案 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"