没有给出一个或多个必需参数的值。 OleDbException没有被破坏的vb.net

时间:2013-04-26 22:15:42

标签: sql vb.net oledbexception

我是vb.net的新手我有一个项目vb.net连接访问2003数据库,我想通过vb.net插入数据来访问数据库我使用Sql命令这里是代码bt它不适合我< / p>

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 & "' );"

1 个答案:

答案 0 :(得分: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)

来自字符串连接的一部分,这样您就不会冒险传递一个具有错误格式规则的数字或日期的值(您的数字或日期值不应该用单引号括起来)。

当然这也避免了其他(Cody Gray)在评论中提出的Sql Injection问题