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

必要になる可能性が高い場所:(最初の2つのパラメーターがテキストで、最後のパラメーターが整数であると想定)

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