我正在尝试进行搜索,您可以输入ID
或Name
,但当我尝试输入名称时会显示错误
“将数据类型varchar转换为bigint时出错。”
这是我的代码:
If button1 = 2 Then
Dim SA As New SqlDataAdapter("Select [Dept_Id],[Dept_Name],[Active] From [it].[dbo].[Department] WHERE Dept_Id = '" & frmMain.txtSearch.Text & "' OR Dept_Name='" & frmMain.txtSearch.Text & "'", Connection1)
Dim DT As New DataTable
SA.Fill(DT)
With D
.DataSource = DT
.Columns(0).HeaderText = "Department ID"
.Columns(1).HeaderText = "Department Name"
.Columns(2).HeaderText = "Active"
End With
第SA.Fill(DT)
行
答案 0 :(得分:3)
您应该使用查询参数。而且,我可能会质疑为什么您希望用户输入可以是名称或数字。但是,鉴于您正在做的事情,您可以通过在比较之前转换Dept_Id
来解决您的问题:
Select [Dept_Id], [Dept_Name], [Active]
From [it].[dbo].[Department]
WHERE CAST(Dept_Id as VARCHAR(255)) = '" & frmMain.txtSearch.Text & "' OR
Dept_Name='" & frmMain.txtSearch.Text & "'"
即使使用参数化查询,这也是解决方案的一种方法。