2013-03-14 160 views
0
con.Open() 
      cmd.CommandText = "Insert Into tblEmp (FN,MN,LN,PAddHN,PAddSB,PAddMun,VPA,BD,BP,Tel,Rel,Cit,Height,Weight,Gend,SN,SOcc,NoC,AgeC,Stat,DS,FaN,FaOcc,MaN,MaOcc,PAdd,PTCN,PTCP,SSS,TIN,PHILH,PAGIBIG,CPNo,Sued,Age,BankAcc,empRfID,Principal,Department,Position,DRate,empID,OffT) Values('" & zfn & "','" & zmn & "','" & zln & "','" & zpaddhn & "','" & zpaddsb & "','" & zpaddmun & "','" & zvpa & "','" & zbd & "','" & zbp & "','" & ztel & "','" & zrel & "','" & zcit & "','" & zheight & "','" & zweight & "','" & zgend & "','" & zsn & "','" & zsocc & "','" & znoc & "','" & zagec & "','" & zstat & "','" & zds & "','" & zfan & "','" & zfaocc & "','" & zman & "','" & zmaocc & "','" & zpadd & "','" & zptcn & "','" & zptcp & "','" & zsss & "','" & ztin & "','" & zphilh & "','" & zpagibig & "','" & zcpno & "','" & zsued & "','" & zage & "','" & txtBankAcc.Text & "','" & zempRefID & "','" & cmbPrin.SelectedItem & "','" & cmbDept.SelectedItem & "','" & txtPos.Text & "','" & txtDRate.Text & "','" & empID & "','" & zOffTime & "')" 
      cmd.ExecuteNonQuery() 
      con.Close() 

在我的程序運行此,當我得到一個錯誤。但是當我在我的MS Access查詢粘貼命令,並將其成功運行。我的代碼中有沒有問題?請幫助tnx。OleDbException是未處理:語法錯誤INSERT INTO語句中

+0

使用參數代替字符串連接來防止[sql-injection](http://en.wikipedia.org/wiki/SQL_injection)攻擊。 – 2013-03-14 08:44:53

回答

0

你的添加參數值在哪裏?

你可以試試這個

Try 
        con = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Dir\DB.accdb") 
        Dim command As String 
        command = "INSERT INTO Table (NOTIF, EMP_NO, EMP_NAME, [POSITION]) VALUES (@NOTIF, @EMP_NO, @EMP_NAME, @POSITION)" 
        con.Open() 
        Dim cmd As OleDbCommand 
        cmd = New OleDbCommand(command, con) 
        cmd.Parameters.AddWithValue("@NOTIF", NOTIFTextBox.Text) 
        cmd.Parameters.AddWithValue("@EMP_NO", EMP_NOTextBox.Text) 
        cmd.Parameters.AddWithValue("@EMP_NAME", EMP_NAMETextBox.Text) 
        cmd.Parameters.AddWithValue("@POSITION", POSITIONTextBox.Text) 

        cmd.ExecuteNonQuery() 
       Catch exceptionObject As Exception 
        MessageBox.Show(exceptionObject.Message) 
       Finally 
        con.Close() 
       End Try 

這個代碼我以前都用過,它的工作完美

而且你的場上模樣的名字中含有非法值VB.net,所以一定要喜歡這個

[Height],[Weight] ....你可以嘗試在你的DATASET> Configure> Select Statement> Insert中檢查它,你會看到非法的值。 就像我的POSITION字段,它是非法的,所以必須包含「[]」

0

如果數據類型是數字類型,則不得使用「'」。如果我解釋正確,你的一些領域是數字。

con.Open() 
cmd.CommandText = "Insert Into tblEmp (someInt, someString) VALUES (12, 'asdf')" 
cmd.ExecuteNonQuery() 
con.Close() 

除此之外,如果您再次運行您的查詢,您應該在Acces中得到相同的錯誤。使用調試器並在「cmd.ExecuteNonQuery()」處添加一個斷點以獲得完整的查詢命令字符串,其中包含所有「'」。