2013-03-14 2 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() 

내 프로그램에서 이걸 실행할 때 오류가 발생했습니다. 내 코드에 문제가 있습니까? Pls 도움 tnx.OleDbException 처리되지 않았습니다 : INSERT INTO 문에서 구문 오류

+0

[sql-injection] (http://en.wikipedia.org/wiki/SQL_injection) 공격을 막기 위해 문자열 연결 대신 매개 변수를 사용하십시오. –

답변

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

데이터 유형이 숫자와 같은 경우 " '"를 사용할 수 없습니다. 만약 내가 정확하게 그것을 interpolated, 일부 필드는 숫자입니다.

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

이 외에도 쿼리를 다시 실행하면 Acces에서 동일한 오류가 발생합니다. 디버거를 사용하고 "cmd.ExecuteNonQuery()"에서 중단 점을 추가하여 모든 " '"와 함께 완료된 쿼리 명령 문자열을 가져옵니다.

관련 문제