首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语法错误OledbException delete语句

语法错误OledbException delete语句
EN

Stack Overflow用户
提问于 2015-04-15 01:28:49
回答 2查看 112关注 0票数 0

我在这里找不出我的语法错误是什么。有人发现了吗?或者我说的都错了?

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2015-04-15 01:30:44

delete语句为Delete From Team Where...

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

票数 2
EN

Stack Overflow用户

发布于 2015-04-15 02:01:19

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

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

代码语言:javascript
复制
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注入的影响,并避免在某些textbox值包含单引号时出现语法错误。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29633777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档