2017-06-29 139 views
-1

我试图做的是自动化,在一个DataGridView,之后接收数据,我目前存在的问题,将其保存在SQL 我已经做了一些实验,我走到这一步,是这样的,如何使用datagridview中的数据自动填充数据表?

GDataPicker(); 
using (SqlCommand cmd = new SqlCommand()) 
     { 
      cmd.Connection = conn; 
      conn.Open(); 
      for (int x = 0; x < dataGridView1.Rows.Count; x++) 
      { 
       string strquery = @"INSERT INTO table_teste1 VALUES (" 

       + dataGridView1.Rows[x].Cells["Rua"].Value + ", " 
       + dataGridView1.Rows[x].Cells["Código Postal"].Value + ", " 
       + dataGridView1.Rows[x].Cells["Distrito"].Value + ", " 
       + dataGridView1.Rows[x].Cells["Concelho"].Value + ", " 
       + dataGridView1.Rows[x].Cells["Freguesia"].Value + ", " 
       + dataGridView1.Rows[x].Cells["GPS"].Value + ");"; 

       cmd.CommandText = strquery; 
       cmd.ExecuteNonQuery(); 


      } 
     } 
     conn.Close(); 

与此代码的问题是,我不断收到这个 - >System.Data.SqlClient.SqlException: 'Incorrect syntax near 'de'.'

任何人都可以尽力帮助我,谢谢。

+1

参数化查询中!它不仅更安全,而且不会有这个问题。 –

+1

[SQL插入查询使用C#]的可能的复制(https://stackoverflow.com/questions/19956533/sql-insert-query-using-c-sharp) – mjwills

+0

此外,什么价值,你将在这里?目前还不清楚'de'来自哪里,所以看起来你试图插入的数据干扰了SQL语法。 (同样,另一个原因参数,否则,我希望你确定与SQL注入) –

回答

2

试试这个,做更改

GDataPicker(); 
conn.Open(); 

for (int x = 0; x < dataGridView1.Rows.Count; x++) 
{ 
    cmd.Parameters.Add(new SqlParameter("@Rua", SqlDbType.VarChar, 255, "Rua")); 
    cmd.Parameters.Add(new SqlParameter("@Codigo Postal", SqlDbType.VarChar, 255, "Codigo Postal")); 
    cmd.Parameters.Add(new SqlParameter("@Distrito", SqlDbType.VarChar, 255, "Distrito")); 
    cmd.Parameters.Add(new SqlParameter("@Concelho", SqlDbType.VarChar, 255, "Concelho")); 
    cmd.Parameters.Add(new SqlParameter("@Freguesia", SqlDbType.VarChar, 255, "Freguesia")); 
    cmd.Parameters.Add(new SqlParameter("@GPS", SqlDbType.VarChar, 255, "GPS")); 

    cmd.Parameters["@Rua"].Value = dataGridView1.Rows[x].Cells[0].Value.ToString(); 
    cmd.Parameters["@Codigo Postal"].Value = dataGridView1.Rows[x].Cells[1].Value.ToString(); 
    cmd.Parameters["@Distrito"].Value = dataGridView1.Rows[x].Cells[2].Value.ToString(); 
    cmd.Parameters["@Concelho"].Value = dataGridView1.Rows[x].Cells[3].Value.ToString(); 
    cmd.Parameters["@Freguesia"].Value = dataGridView1.Rows[x].Cells[4].Value.ToString(); 
    cmd.Parameters["@GPS"].Value = dataGridView1.Rows[x].Cells[5].Value.ToString(); 

    cmd = new SqlCommand(strquery); 
    cmd.Connection = con; 

    cmd.ExecuteNonQuery(); 
} 
conn.Close(); 
+0

是它的帮助下,只需要编辑一些事情。 –

+0

将其标记为,以帮助其他人并遵循了它@PedroAlvim – Rekcs

+0

在您使用CMD =新的SqlCommand(strquery)回答;说,我不能assing CMD,因为他是可变的使用 –

相关问题