使用DataAdapter/Dataset的Asp.net参数化SQL查询

使用DataAdapter/Dataset的Asp.net参数化SQL查询,asp.net,sql,vb.net,parameters,Asp.net,Sql,Vb.net,Parameters,我想做的是查找分配给Valor的textbox4上输入的文本,并显示如果找到,下面的代码正在工作,但我想使用参数化查询(安全原因),我不知道如何修改现有代码来完成。(例如,123-A) 我将查找“123-A”,但在当前代码中,我得到了一个错误“invalid column A”,我将查找“123-A”的SQL列是“ID_LALTest” 是的,您对sql注入非常开放。取决于不同的数据库(您只需要SQL,但需要SQL Server、MySQL、Access/SQL数据库等) 不管怎么说,它离你拥有

我想做的是查找分配给Valor的textbox4上输入的文本,并显示如果找到,下面的代码正在工作,但我想使用参数化查询(安全原因),我不知道如何修改现有代码来完成。(例如,123-A)

我将查找“123-A”,但在当前代码中,我得到了一个错误“invalid column A”,我将查找“123-A”的SQL列是“ID_LALTest”


是的,您对sql注入非常开放。取决于不同的数据库(您只需要SQL,但需要SQL Server、MySQL、Access/SQL数据库等)

不管怎么说,它离你拥有的并不太远。不擅长VB,我会给你一些伪代码

更改查询,并为要从输入中应用的“变量”输入一个“占位符”。。。例:

"select (your fields) from (yourtable) where ID_LALTest = @parmValor"
然后,将参数添加到为数据适配器创建的sql命令中。。。类似于

DA.SelectCommand.Parameters.Add( "@parmValor", theInputFromYourVariable );

现在,如果您有多个要应用的条件,只需继续添加“@someParm”值,并按照查询中存在的相同顺序添加参数。。。我以前听别人说过,仅仅是参数的顺序序列与查询不匹配就可能/确实会导致问题。。。例如数据类型期望值。

您对文档()的哪一部分有问题?我刚刚用您给我的参考更新了代码,但是我收到了一个错误“error in converting”123-A“Char to Int”。。但我;m无法检测为什么要尝试转换为INT?是否为数据库中的列类型使用了适当的SqlDbType?SQL列设置为varchar,在某些情况下填充函数没有问题??AddWithValue就足够了。为了绝对确定您正在传递您想要传递的内容,请使用
.Add(带有{.ParameterName=“@Valor”,.SqlDbType=SqlDbType.VarChar,.Size=50,.Value=Valor}的新SqlParameter)
(将
.Size
更改为数据库中的值)。当我使用参数时,请添加(“变量”,SqlDbType)这就是visual studio所建议的。。。因此,我不能使用(“@Val”,Valor”),或者我只是把解决方案弄错了
DA.SelectCommand.Parameters.Add( "@parmValor", theInputFromYourVariable );