データベースに複数のバーコードを追加しようとしているサイトがあります。一括追加は、最後に「F」を含む「特別な」一連のバーコードがあることを除いて、うまく機能します。これは、ブックを挿入するために呼び出される別のストアドプロシージャを示します。ただし、実行しようとするとSQLエラーが発生します。バーコードの最後にあるFが問題です。1000〜1005を追加しようとしている場合は、正常に機能します。私が1000F-1005Fを実行した場合、SQLがFをどう処理するかを知らないため、そうではありません...
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 に答える