2013-04-26 42 views
-2

新vb.net我有一個項目vb.net連接到訪問2003年數據庫,我想插入數據通過vb.net訪問數據庫我使用Sql命令這裏是代碼bt它是不爲我工作對於一個或多個必需參數沒有給出值。 OleDbException是unblockled vb.net

cmd.CommandText = "INSERT INTO info(nam, employed, ple, mertebe, navonishan, sermoche, moche, dxindin, dbemoche, brwaname)" + " VALUES (" & Me.NamTextBox.Text & ",'" & CDate(Me.EmployedDateTimePicker.Text) & "','" & CInt(Me.PleTextBox.Text) & "','" & CInt(Me.MertebeTextBox.Text) & "','" & Me.NavonishanTextBox.Text & "','" & CDate(Me.SermocheDateTimePicker.Text) & "','" & CInt(Me.MocheTextBox.Text) & "','" & CByte(Me.DxindinCheckBox.Checked) & "','" & CByte(Me.DbemocheCheckBox.Checked) & "','" & Me.BrwanameTextBox.Text & "');" 
+0

必讀:http://en.wikipedia.org/wiki/SQL_injection和http://msdn.microsoft。 COM/EN-US /庫/ ms161953.aspx – 2013-04-26 22:20:23

回答

0

使用參數化查詢。

cmd.CommandText = "INSERT INTO info(nam, employed, ple, mertebe, navonishan, " & _ 
        "sermoche, moche, dxindin, dbemoche, brwaname) VALUES (" & _ 
        "?,?,?,?,?,?,?,?,?,?)" 
cmd.Parameters.AddWithValue("@p1", Me.NamTextBox.Text) 
cmd.Parameters.AddWithValue("@p2", Convert.ToDateTime(Me.EmployedDateTimePicker.Text)) 
cmd.Parameters.AddWithValue("@p3", Convert.ToInt32(Me.PleTextBox.Text)) 
cmd.Parameters.AddWithValue("@p4", Convert.ToInt32(Me.MertebeTextBox.Text)) 
cmd.Parameters.AddWithValue("@p5", Me.NavonishanTextBox.Text) 
cmd.Parameters.AddWithValue("@p6", Convert.ToDateTime(Me.SermocheDateTimePicker.Text)) 
cmd.Parameters.AddWithValue("@p7", Convert.ToInt32(Me.MocheTextBox.Text)) 
cmd.Parameters.AddWithValue("@p8", Me.DxindinCheckBox.Checked) 
cmd.Parameters.AddWithValue("@p9", DbemocheCheckBox.Checked) 
cmd.Parameters.AddWithValue("@p10", Me.BrwanameTextBox.Text) 

的一部分從字符串連接,這樣你不要冒險通過打算成爲一個數字或用錯誤的格式設置規則的日期值(您的數字或日期值不應該被包含在單引號)。

當然,這也避免在評論其他(科迪灰色)表示SQL注入問題

相關問題