C# 如何在c中单击按钮将所有数据从datagridview插入数据库表#
我想在单击按钮时将所有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
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");
}
}