2012-10-29 35 views
1

我有一個網站,我試圖將多個條形碼添加到數據庫。批量添加效果很好,除了我有一個「特殊」系列條形碼,最後包含一個「F」。這表示要調用插入書籍的不同存儲過程。然而,每當我嘗試運行它時,我都會得到一個SQL錯誤。條形碼末尾的F是問題。如果我試圖添加1000 - 1005它工作正常。如果我做1000F - 1005F它不會因爲我的SQL不知道與F做什麼...如何搜索特定值的用戶輸入

+0

您能否向我們展示條碼實際包含的內容?想知道如果有一個特殊的字符 – Darren

+0

我想我找到了問題......但不知道如何解決它或應用它...我正在做一個批量添加...所以讓我說我想添加... 30F - 50F當我在「結束條形碼」中輸入50F時,它試圖做數學運算(30f-50F)因爲它不能減去字母......它會出現一個SQL錯誤...如何檢查時是否將條形碼參數中的「F」去掉?我將在上面編輯我的代碼... – Shmewnix

+0

那麼,您的實際錯誤消息得到的問題已在下面得到解答,您在sproc調用的字符串部分周圍缺少'。如果你想刪除F,那麼你可以做很多事情之一,如dim txt = x_sBarCode.Text.Replace(「F」,「」)。看起來像一個不同的問題,但?除非我失去了一些東西? – Darren

回答

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 

UPDATE

增加了一些---- ^指着什麼我意指關於'

您有:

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 
     ''--------------------------^-----------------------^--^--------------------------------^ 
+0

'加密優惠券書是文檔... – Shmewnix

+0

不,我的意思是在實際的mySQL系列。 ..後EXEC usp_Insert_Encrypted和之前「&x_sBarcode.Text你應該有一個',因爲你試圖推入一個字符串到sproc – Darren

+0

有另一個樣子。我添加--- ^指向'我的意思是 – Darren

1

首先你打開sql注入的代碼,你應該儘快糾正這個問題。 你可以閱讀有關SQL注入的位置:

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

現在你的問題。我幾乎可以肯定你在設置mySQL時缺少了字符。 使用SqlCommand以安全的方式傳遞參數。提供的鏈接中也描述了傳遞參數。