2013-05-03 69 views
0

我在我的C#代碼SqlCommand的插入查詢

connexion = new SqlConnection(connexionString); 
      connexion.Open(); 
      List<int> liste = client.GetIDFichiers(1210); 
      int a = 2; 
      foreach (int idfichier in liste) 
      { 
       a++; 
       using (connexion) 
       { 
        using (SqlCommand sqlCmd = new SqlCommand("INSERT INTO REL_Fab3DLotFichier_Fichier3D (IDREL_Fab3DLotFichier_Fichier3D,IDFichier3D,IDFab3DLotFichier,CreePar,CreeLe,ModifiePar,DateMaj,EstActif) VALUES (" + a + "," + idfichier + "," + 17965 + "," + null + "," + null + "," + null + "," + null + "," + 1 + ")", connexion)) 
        { 
         try 
         { 
          sqlCmd.ExecuteNonQuery(); 
         } 
         catch (Exception ex) { MessageBox.Show(ex.ToString()); } 

        } 
       } 

      } 

插入工作不執行插入查詢,我不知道爲什麼。選擇和刪除查詢工作正常。只有當我嘗試插入值出現一個syntaxic錯誤。

  • 什麼是語法錯誤?
  • 我該如何解決?
+0

請註明錯誤... – 2013-05-03 09:51:06

+0

告訴你表模式 – 2013-05-03 09:52:26

+2

哇我應該在哪裏開始!首先,您將字符串和空值連接起來。其次...考慮參數化查詢。 – 2013-05-03 09:53:48

回答

1

一些你逝去的可能是串/ VARCHAR對象的值,你是不是用引號包裹他們:

new SqlCommand("INSERT INTO REL_Fab3DLotFichier_Fichier3D (IDREL_Fab3DLotFichier_Fichier3D,IDFichier3D) VALUES ('" + a + "', '" + idfichier + "')", connexion); 

真的像AVD建議,你應該使用參數化,這是不太容易發生注入攻擊。

3

什麼是語法錯誤?和我如何解決它?

是的。使用參數化的SQL語句。

string sql = "INSERT INTO TableName (Column1,Column2) VALUES (@value1,@value2)"; 
using(SqlCommand sqlCmd = new SqlCommand(sql,connection)) 
{ 
sqlCmd.Parameters.Add("@value1",SqlDbType.Varchar,20).Value = varName1; 
sqlCmd.Parameters.Add("@value2",SqlDbType.Varchar,20).Value = DBNull.Value; 
... 
} 

嘗試包含非空字段以準備INSERT SQL。

[email protected]"INSERT INTO REL_Fab3DLotFichier_Fichier3D 
       (IDREL_Fab3DLotFichier_Fichier3D, 
       IDFichier3D, 
       IDFab3DLotFichier, 
       DateMaj,EstActif) 
    VALUES 
       (@IDREL_Fab3DLotFichier_Fichier3D, 
       @IDFichier3D, 
       @IDFab3DLotFichier, 
       @DateMaj,@EstActif)"; 
0

請在單引號的字符串值,如下面

New SqlCommand("insert into Type(TypeName,TypeOrder,CategoryID) values ('" + txtType1.Text + "','" + txtOrder.Text + "','" + ViewState("CatID").ToString() + "')", con)