关于 vb.net:Syntax Error OledbException 删除语句

Syntax Error OledbException delete statement

我无法弄清楚我的语法错误是什么。有人发现吗?还是我做错了?

1
Dim myCommand As New OleDb.OleDbCommand("delete * from Team where intPlayerNo='" & txtUniformNo.Text &"'_ strFirstName='" & txtFirstName.Text &"'_ strLastName='" & txtLastName.Text &"'_ strParentName='" & txtParent.Text &"'_ strAddress='" & txtAddress.Text &"'_ strCity='" & txtCity.Text &"'_ strState='" & txtState.Text &"'_ strZipCode='" & txtZip.Text &"'_ strPhone='" & txtPhone.Text &"'_ intAge='" & txtAge.Text &"'", myConnection)


删除语句是Delete From Team Where...

最好建议您使用参数化查询来避免 SQL 注入攻击


您的语法错误,因为您有多个 WHERE 条件,但您没有使用正确的 AND/OR 将条件连接在一起。当然 DELETE * FROM 表语法只被 MS-ACCESS 接受,但正确的 SQL 语法是 DELETE FROM(不带 *)并且 Access 也接受,所以最好使用标准。

说你需要在你的命令中使用参数化查询而不是字符串连接

1
2
3
4
5
6
7
8
9
Dim cmdText ="DELETE FROM Team" & _
             "WHERE intPlayerNo = @playerNo AND" & _
             "strFirstName = @firstName AND" & _
             ".... and so on with the other fields"
Dim myCommand As New OleDb.OleDbCommand(cmdText, myConnection)
myCommand.Parameters.Add("@playerNo", OleDbType.VarWChar).Value = txtUniformNo.Text
myCommand.Parameters.Add("@firstName", OleDbType.VarWChar).Value = txtFirstName.Text
... continue with the other parameters required by the WHERE statement
myCommand.ExecuteNonQuery()

如果您的某些文本框值包含单引号,使用参数将使您的代码免受 Sql 注入的影响,并避免语法错误。

请记住,如果您的表有一个主键,那么您的 WHERE 可以简单地减少到只有 PrimaryKeyFieldName = @Value