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) |
删除语句是
最好建议您使用参数化查询来避免 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 可以简单地减少到只有