从datagridview将数据传输到数据库

时间:2015-04-17 14:25:53

标签: c# database datagridview

我的数据传输需要帮助。每当我尝试将数据从选定的datagridview行传输到数据库,而不是传输选定的行时,它会传输datagridview中的所有数据。

以下是我目前的代码:

    private void btnTransfer_Click(object sender, EventArgs e)
    {
        if (con.State == ConnectionState.Open)
        {
            con.Close();
        }

        using (SqlCommand cmd = new SqlCommand("INSERT INTO tblTransfered(deptNo,date,issuedFrom,scheduleNo,pvNo,name,amount,typeOfPayment) VALUES (@C1,@C2,@C3,@C4,@C5,@C6,@C7,@C8)", con))
        {
            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));
            cmd.Parameters.Add(new SqlParameter("@C5", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@C6", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@C7", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@C8", SqlDbType.VarChar));
            con.Open();
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (!row.IsNewRow)
                {
                    cmd.Parameters["@C1"].Value = row.Cells[2].Value;
                    cmd.Parameters["@C2"].Value = row.Cells[0].Value;
                    cmd.Parameters["@C3"].Value = row.Cells[3].Value;
                    cmd.Parameters["@C4"].Value = row.Cells[4].Value;
                    cmd.Parameters["@C5"].Value = row.Cells[1].Value;
                    cmd.Parameters["@C6"].Value = row.Cells[5].Value;
                    cmd.Parameters["@C7"].Value = row.Cells[6].Value;
                    cmd.Parameters["@C8"].Value = row.Cells[7].Value;
                    cmd.ExecuteNonQuery();
                }
            }
            MessageBox.Show("Files Transfered for Approval Successflly");
        }

2 个答案:

答案 0 :(得分:1)

如果您只想在DataGridView中插入选定的行,那么您应该在其上循环,请替换此{/ 1>}行

foreach

<强> UPD

MSDN:

“SelectionMode属性必须设置为FullRowSelect或RowHeaderSelect,以便使用选定的行填充SelectedRows属性。”

答案 1 :(得分:0)

SelectedRows

的循环
foreach (DataGridViewRow row in dataGridView1.SelectedRows)