C# 如何在c中单击按钮将所有数据从datagridview插入数据库表#

C# 如何在c中单击按钮将所有数据从datagridview插入数据库表#,c#,C#,我想在单击按钮时将所有datagridview数据插入数据库表 private void cs_btnfinish_Click(object sender, EventArgs e) { string StrQuery; for (int i = 0; i < dataGridView1.Rows.Count; i++) { StrQuery = "INSERT INTO tblmedisale VA

我想在单击按钮时将所有datagridview数据插入数据库表

    private void cs_btnfinish_Click(object sender, EventArgs e)
    {
        string StrQuery;

        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            StrQuery = "INSERT INTO tblmedisale VALUES ('" + dataGridView1.Rows[i].Cells[0].Value + "', '" + Convert.ToDecimal(dataGridView1.Rows[i].Cells[1].Value) + "', '" + Convert.ToDecimal(dataGridView1.Rows[i].Cells[2].Value) + "')";
            con.Open();
            SqlCommand cmd = new SqlCommand(StrQuery, con);
            cmd.ExecuteNonQuery();
            con.Close();
        }

        MessageBox.Show("aaaa");
    }
private void cs\u btnfinish\u单击(对象发送方,事件参数e)
{
字符串StrQuery;
对于(int i=0;i
试试这个:

private void  inserttoDatagridview()
        {
            try
            {
                con.Open()
                (foreach GridViewRow rw in DataGridView1.Rows)
                {
                    cmd = New SqlCommand("insert into tblEmp (empid,empname,empdesg,dob) values (" & rw.Cells(0).Value & ",'" & rw.Cells(1).Value & "','" & rw.Cells(2).Value & "','" & CDate(rw.Cells(3).Value.ToString()) & "') ", con);
                    cmd.ExecuteNonQuery();
                }

            }
            catch (Exception ex)
            {
                throw;
            }   
            finally
            {
                con.Close()
            }
        }

这与vb.net中的代码几乎相同。我的问题是,每次使用此命令通过dataGridView将一行数据插入数据库时,它都会在下面创建一个空行。

在执行插入之前,请检查循环中gridview中的空行:

Private void  inserttoDatagridview()
        {
            try
            {
                con.Open()
                (foreach GridViewRow rw in DataGridView1.Rows)

if rw.Cells(0) <> Nothing then
                {
                    cmd = New SqlCommand("insert into tblEmp (empid,empname,empdesg,dob) values (" & rw.Cells(0).Value & ",'" & rw.Cells(1).Value & "','" & rw.Cells(2).Value & "','" & CDate(rw.Cells(3).Value.ToString()) & "') ", con);
                    cmd.ExecuteNonQuery();

End If
                }

        }
        catch (Exception ex)
        {
            throw;
        }   
        finally
        {
            con.Close()
        }
    }
Private void inserttoDatagridview()
{
尝试
{
con.Open()
(DataGridView1.Rows中的foreach GridViewRow rw)
如果rw.单元格(0)为空,则
{
cmd=New-SqlCommand(“插入到tblEmp(empid,empname,empdesg,dob)值(&rw.Cells(0.Value&)”,“&rw.Cells(1.Value&“,””,“&rw.Cells(2.Value&“,”,”&CDate(rw.Cells(3.Value.ToString())&“),con);
cmd.ExecuteNonQuery();
如果结束
}
}
捕获(例外情况除外)
{
投掷;
}   
最后
{
con.Close()
}
}
私有无效按钮3\u单击(对象发送者,事件参数e) {

        dt.Clear();
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\HEAT_STORE\HEAT_STORE\bin\Debug\db.accdb");

        if(dataGridView1.Rows.Count> 0)
        {   //                                                                                                        //values                                                                                                         
            string sql = "insert into SLAB(DATE,SHIFT,HEAT_NO,THICK,WIDTH,LENGTH,PCS,ST_GRADE,LOCATION,OPTION,SLAB_NO)values(@DATE,@SHIFT,@HEAT_NO,@THICK,@WIDTH,@LENGTH,@PCS ,@ST_GRADE,@LOCATION,@OPTION,@SLAB_NO) ";//
            OleDbCommand cmd = new OleDbCommand(sql, con);

            for (int i = 0; i < dataGridView1.Rows.Count -1; i++)
          {
              cmd.Parameters.AddWithValue("@DATE", dataGridView1.Rows[i].Cells[0].Value.ToString());
              cmd.Parameters.AddWithValue("@SHIFT", dataGridView1.Rows[i].Cells[1].Value.ToString());
              cmd.Parameters.AddWithValue("@HEAT_NO", dataGridView1.Rows[i].Cells[2].Value.ToString());
              cmd.Parameters.AddWithValue("@THICK", dataGridView1.Rows[i].Cells[3].Value.ToString());
              cmd.Parameters.AddWithValue("@WIDTH", dataGridView1.Rows[i].Cells[4].Value.ToString());
              cmd.Parameters.AddWithValue("@LENGTH", dataGridView1.Rows[i].Cells[5].Value.ToString());
              cmd.Parameters.AddWithValue("@PCS ", dataGridView1.Rows[i].Cells[6].Value.ToString());
              cmd.Parameters.AddWithValue("@ST_GRADE", dataGridView1.Rows[i].Cells[7].Value.ToString());
              cmd.Parameters.AddWithValue("@LOCATION", dataGridView1.Rows[i].Cells[8].Value.ToString());
              cmd.Parameters.AddWithValue("@OPTION", dataGridView1.Rows[i].Cells[9].Value.ToString());
              cmd.Parameters.AddWithValue("@SLAB_NO", dataGridView1.Rows[i].Cells[10].Value.ToString());


            }
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            da.Fill(dt);
            dataGridView1.DataSource = dt;  
            MessageBox.Show("SaccessFuly");


        }
    }
dt.Clear();
OleDbConnection con=新OleDbConnection(@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\HEAT\u STORE\HEAT\u STORE\bin\Debug\db.accdb”);
如果(dataGridView1.Rows.Count>0)
{///值
string sql=“插入板(日期、班次、炉号、厚度、宽度、长度、PCS、ST_品位、位置、选项、板号)值(@DATE、@SHIFT、@HEAT_NO、@THICK、@WIDTH、@LENGTH、@PCS、@ST_品位、@LOCATION、@OPTION、@SLAB_NO)”//
OleDbCommand cmd=新的OleDbCommand(sql,con);
对于(int i=0;i
您到底遇到了什么问题?
con
来自哪里?您不需要在每次迭代时打开和关闭它,只需在循环之前打开它一次,然后再关闭它(使用
using
)。另外,您很容易受到SQL注入攻击,应该使用预处理语句。您遇到了什么问题?您还应该使用参数化查询来防止SQL注入
        dt.Clear();
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\HEAT_STORE\HEAT_STORE\bin\Debug\db.accdb");

        if(dataGridView1.Rows.Count> 0)
        {   //                                                                                                        //values                                                                                                         
            string sql = "insert into SLAB(DATE,SHIFT,HEAT_NO,THICK,WIDTH,LENGTH,PCS,ST_GRADE,LOCATION,OPTION,SLAB_NO)values(@DATE,@SHIFT,@HEAT_NO,@THICK,@WIDTH,@LENGTH,@PCS ,@ST_GRADE,@LOCATION,@OPTION,@SLAB_NO) ";//
            OleDbCommand cmd = new OleDbCommand(sql, con);

            for (int i = 0; i < dataGridView1.Rows.Count -1; i++)
          {
              cmd.Parameters.AddWithValue("@DATE", dataGridView1.Rows[i].Cells[0].Value.ToString());
              cmd.Parameters.AddWithValue("@SHIFT", dataGridView1.Rows[i].Cells[1].Value.ToString());
              cmd.Parameters.AddWithValue("@HEAT_NO", dataGridView1.Rows[i].Cells[2].Value.ToString());
              cmd.Parameters.AddWithValue("@THICK", dataGridView1.Rows[i].Cells[3].Value.ToString());
              cmd.Parameters.AddWithValue("@WIDTH", dataGridView1.Rows[i].Cells[4].Value.ToString());
              cmd.Parameters.AddWithValue("@LENGTH", dataGridView1.Rows[i].Cells[5].Value.ToString());
              cmd.Parameters.AddWithValue("@PCS ", dataGridView1.Rows[i].Cells[6].Value.ToString());
              cmd.Parameters.AddWithValue("@ST_GRADE", dataGridView1.Rows[i].Cells[7].Value.ToString());
              cmd.Parameters.AddWithValue("@LOCATION", dataGridView1.Rows[i].Cells[8].Value.ToString());
              cmd.Parameters.AddWithValue("@OPTION", dataGridView1.Rows[i].Cells[9].Value.ToString());
              cmd.Parameters.AddWithValue("@SLAB_NO", dataGridView1.Rows[i].Cells[10].Value.ToString());


            }
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            da.Fill(dt);
            dataGridView1.DataSource = dt;  
            MessageBox.Show("SaccessFuly");


        }
    }