2017-06-29 144 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,因爲他是可變的使用 –

相關問題