1

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

4

2 回答 2

1

首先,您的代码为 sql 注入打开,您应该尽快更正此问题。您可以在此处阅读有关 sql 注入的信息:

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

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

于 2012-10-29T17:40:10.247 回答
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

它可能需要在哪里:(假设前两个参数是文本,最后一个是整数

mySQL= "EXEC usp_Insert_Encrypted '" & x_sBarCode.Text & "','"  & x_sBarCodeSeriesEnd.Text & "'," & v_lBookTypeId
      ''--------------------------^-----------------------^--^--------------------------------^
于 2012-10-29T17:39:00.420 回答