如何搜索特定值的用户输入

时间:2012-10-29 17:21:32

标签: c# asp.net sql vb.net

我有一个网站,我试图将多个条形码添加到数据库。批量添加效果很好,除了我有一个“特殊”系列条形码,最后包含一个“F”。这表示要插入书籍的不同存储过程。但是,每当我尝试运行它时,我都会遇到SQL错误。条形码末尾的F是问题。如果我试图添加1000 - 1005它工作正常。如果我做1000F - 1005F它不会,因为我的SQL不知道如何处理F ...

2 个答案:

答案 0 :(得分:1)

首先为sql注入打开你的代码,你应该尽快纠正这个问题。 你可以在这里阅读sql注入:

http://msdn.microsoft.com/en-us/library/ff648339.aspx

现在关于你的问题。当你设置mySQL时,我几乎可以肯定你错过了'chars'。 使用SqlCommand以安全的方式传递参数。传递参数也在提供的链接中描述。

答案 1 :(得分:0)

看起来你的条形码看起来不像撇号

试试这个:第一个mySQL的文本包含在'

这是假设usp_Insert_Encrypted正在接受字符串

Dim mySQL as String
    if InStr(x_sBarcode.Text, "F") > 1 then 'Encrypted Coupon Books           
       mySQL= "EXEC usp_Insert_Encrypted '" & x_sBarCode.Text & "','"  & x_sBarCodeSeriesEnd.Text & "'," & v_lBookTypeId
      ''---------------------------------^-----------------------^--^--------------------------------^
    Response.Write(mySQL)
    else
       mySQL = "EXEC sp_BulkInsert 1," & x_sBarCode.Text & "," & x_sBarCode.Text & "," & x_sBarCodeSeriesEnd.Text
    end if

<强>更新

添加了一些---- ^指向我对'

的含义 你有:

mySQL= "EXEC usp_Insert_Encrypted " & x_sBarCode.Text & ","  & x_sBarCodeSeriesEnd.Text & "," & v_lBookTypeId

可能需要的地方:(假设前2个参数是文本,最后一个是integet

mySQL= "EXEC usp_Insert_Encrypted '" & x_sBarCode.Text & "','"  & x_sBarCodeSeriesEnd.Text & "'," & v_lBookTypeId
      ''--------------------------^-----------------------^--^--------------------------------^