2013-03-14 139 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()”处添加一个断点以获得完整的查询命令字符串,其中包含所有“'”。