2013-08-19 30 views
-4

誰能解決下面的代碼PLZ ....我得到語法錯誤INSERT INTO語句中

注:前端VB8 &後端接入7

Private Sub SaveData() 
    Dim InsertString As String 
    InsertString = "Insert into STUDENT DETAILS(SREGNO,SFIRSTNAME,SMIDDLENAME,SLASTNAME,SYEAR,SCOURSE,SSEM,SCLASS,SLANGUAGE)" & "Values('" & Me.TXTSREGNO.Text & "','" & Me.TXTSFIRSTNAME.Text & "','" & Me.TXTSMIDDLENAME.Text & "','" & Me.TXTSLASTNAME.Text & "','" & Me.COMB1SYEAR.Text & "','" & Me.COMB2SCOURSE.Text & "','" & Me.COMB3SSEM.Text & "','" & Me.COMB4SCLASS.Text & "','" & Me.COMB5SLANGUAGE.Text & " ');" 
    Dim InsertCommand As New OleDbCommand(InsertString, Con) 
    InsertCommand.ExecuteNonQuery() 
    MsgBox("New record added successfully.", MsgBoxStyle.Information, "Record Added") 
End Sub 
+2

1.打印生成的字符串。 2.比較預期的字符串。 3.修正算法。 4.轉到1. – dutt

+0

你可以設置你的代碼的格式嗎? – user2366842

+1

另外,考慮使用參數,建立所有這樣的查詢,可能會允許用戶在文本字段中輸入引號並[擦除數據庫](http://xkcd.com/327/)。 –

回答

3

的錯誤是名字包含空格,所以你需要把它們放在方括號

INSERT INTO [Student Details] ........ 

但你真的需要知道如何使用參數化查詢表。
此代碼是真的Sql Injections

邀請這是你如何能返工代碼中使用參數化查詢

Dim InsertString As String 
InsertString = "Insert into [STUDENT DETAILS] " & _ 
"(SREGNO,SFIRSTNAME,SMIDDLENAME,SLASTNAME,SYEAR,SCOURSE,SSEM,SCLASS,SLANGUAGE)" & _ 
"Values(?,?,?,?,?,?,?,?,?)" 
Dim InsertCommand As New OleDbCommand(InsertString, Con) 
InsertCommand.Parameters.AddWithValue("@p1", Me.TXTSREGNO.Text) 
InsertCommand.Parameters.AddWithValue("@p2", Me.TXTSFIRSTNAME.Text) 
InsertCommand.Parameters.AddWithValue("@p3", Me.TXTSMIDDLENAME.Text) 
InsertCommand.Parameters.AddWithValue("@p4", Me.TXTSLASTNAME.Text) 
InsertCommand.Parameters.AddWithValue("@p5", Me.COMB1SYEAR.Text) 
InsertCommand.Parameters.AddWithValue("@p6", Me.COMB2SCOURSE.Text) 
InsertCommand.Parameters.AddWithValue("@p7", Me.COMB3SSEM.Text) 
InsertCommand.Parameters.AddWithValue("@p8", Me.COMB4SCLASS.Text) 
InsertCommand.Parameters.AddWithValue("@p9", Me.COMB5SLANGUAGE.Text) 
InsertCommand.ExecuteNonQuery() 

是的,你寫更多的代碼,但它是SQL注入安全當一個或多個文本框字段碰巧包含單引號時,您將永遠不會遇到語法錯誤。