da.fill ')' 附近的错误语法
Posted
技术标签:
【中文标题】da.fill \')\' 附近的错误语法【英文标题】:da.fill incorrect syntax near ')'da.fill ')' 附近的错误语法 【发布时间】:2014-10-06 07:19:40 【问题描述】:我的线路有问题
da.Fill(ds, "Employee")
我没有任何线索可以解决这个问题。有人可以帮忙吗?
这是我的实际代码:
Private Sub btnsearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsearch.Click
Dim da As New SqlClient.SqlDataAdapter
Dim ds As New DataSet
Dim dt As New DataTable
If txtssn.Text = "" Then
MsgBox("Please input SSN.", MsgBoxStyle.Exclamation, "Company Records - Employee")
Else
con.Open()
Dim cmd As New SqlCommand("SELECT * FROM [Employee] WHERE [Ssn] = '" & Trim(Me.txtssn.Text) & "')", con)
da.SelectCommand = cmd
da.Fill(ds, "Employee")
dt = ds.Tables("Employee")
If (dt.Rows.Count > 0) Then
Me.txtfname.Text = dt.Rows(0).Item(1)
Me.txtmi.Text = dt.Rows(0).Item(2)
Me.txtlname.Text = dt.Rows(0).Item(3)
Me.dtpbdate.Text = dt.Rows(0).Item(5)
Me.txtaddress.Text = dt.Rows(0).Item(6)
Me.cmbsex.Text = dt.Rows(0).Item(7)
Me.txtsalary.Text = dt.Rows(0).Item(8)
Me.cmbsuperssn.Text = dt.Rows(0).Item(9)
'Me.cmbdept.Text =
btnedit.Enabled = True
btndelete.Enabled = True
editable()
Else
MsgBox("Record Not Found", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Company Records - Employee")
End If
con.Close()
End If
【问题讨论】:
我心中的魔鬼说:键入';DROP TABLE Employee;--
,但我更愿意说:阅读有关Sql Injection的信息
【参考方案1】:
删除右括号,因为那是 SELECT
而不是 INSERT
:
"SELECT * FROM [Employee] WHERE [Ssn] = '" & Trim(Me.txtssn.Text) & "'"
但是,我总是使用 sql-parameters 来防止 sql-injection。
Using con As New SqlConnection("ConenctionString")
Using da As New SqlDataAdapter("SELECT * FROM [Employee] WHERE [Ssn] = @SSN", con)
da.SelectCommand.Parameters.Add("@SSN", SqlDbType.VarChar).Value = txtssn.Text
da.Fill(ds, "Employee")
End Using
End Using
【讨论】:
【参考方案2】:从您的 SQL 语句中删除结尾的 )
。
"SELECT * FROM [Employee] WHERE [Ssn] = '" & Trim(Me.txtssn.Text) & "'"
也看看你为什么shouldn't be doing it in the first place。
【讨论】:
【参考方案3】:SQL
statement 附近存在语法错误,因此您需要删除不需要的 (
以使该语句可行。
Dim cmd As New SqlCommand("SELECT * FROM [Employee] WHERE [Ssn] = '" & Trim(Me.txtssn.Text) & "'", con)
【讨论】:
以上是关于da.fill ')' 附近的错误语法的主要内容,如果未能解决你的问题,请参考以下文章
存储过程出现错误.关键字'ORDER'附近有语法错误.')'附近有语法错误.