我正在創建一個程序,用戶可以在其中搜索並添加其所需的順序。我現在面臨的問題是,當我拋出異常時,程序不會讀取異常,以便用戶知道輸入的ID是否在數據庫中。我將提供我正在開發的程序的代碼片段。在asp.net web表單中處理異常
0
A
回答
1
問題
- 您的代碼將不拋出一個錯誤,如果
item_code
不存在於數據庫中。它將不會進入while
循環。 - 這不是正確使用例外。如果沒有找到記錄,這不是錯誤。檢查
item_code
是否存在的正確方法是檢查數據讀取器是否有結果。 - 你必須正確地捍衛自己再次SQL注入。通過連接sql查詢,你可以打開一大堆問題。例如,如果用戶惡意輸入以下文本,它將刪除整個Products表:
';DROP TABLE Products;-
- 您沒有正確處理
OleDbConnection
或OleDbCommand
對象。如果發生異常,您的代碼將不會運行Dispose()
方法。這可能會導致您快速耗盡資源。
解決方案
你應該檢查
dataRead
有任何行。如果不是,然後你可以通過JavaScript提醒用戶。像這樣:If dataRead.HasRows Then //READ DATA Else //ALERT USER End If
解決方案#1的地址問題#2以及
使用參數化查詢。 .NET框架將阻止這些類型的攻擊(SQL注入)。
selectProductQuery = "SELECT * FROM Products WHERE item_code = @item_code" ... newCmd.Parameters.AddWithValue("item_code", txtItemCode.Text);
裹實現在使用塊
Dispose()
所有對象。這將確保一切都妥善處理,無論是否出現錯誤。Using newCon As New OleDbConnection(....) Using newCmd As New OleDb.OleDbCommand(...) ... End Using End Using
要完全誠實的,有相當多的「錯誤」與您的代碼,但是這應該讓你在正確的方向前進。
0
行:
Response.Write(<script>alert('The ...')</script>)
需要爲(注意引號):
Response.Write("<script type='text/javascript'>alert('The ...')</script>")
同爲頂部的另外一個,但我不認爲這會解決您的整體問題。
相反,使用JavaScript這樣的:
if(!alert('Whoops!')){window.location.reload();}
彈出一個提示框,他們點擊按鈕後,再重新加載頁面。
相關問題
- 1. 在asp.net中處理異常
- 2. 異常處理ASP.NET MVC Web API
- 3. 在Web API中處理異常
- 4. 處理MDI表單中的異常
- 5. Web服務異常處理
- 6. 在asp.net中的異常處理
- 7. 在ASP.NET 3.5中實現異常處理
- 8. 如何在ASP.NET Web App中生成未處理的異常?
- 9. Web服務異常處理
- 10. Spring Web Flow異常處理
- 11. ASP.NET異常處理工具
- 12. asp.net未處理的異常
- 13. 異常處理ASP.NET MVC
- 14. ASP.NET MVC異常處理
- 15. 處理異步ASMX Web服務異常
- 16. F#異步Web請求,處理異常
- 17. 如何處理xamarin表單項目中的異常處理?
- 18. ASP.NET(C#)Web服務中的異常處理
- 19. ASP.NET Web應用程序中異常處理的最佳實踐
- 20. 在asp.net中處理未處理的異常
- 21. 如何在ASP.NET中處理未處理的線程異常?
- 22. 從單獨的類文件在ASP.NET(C#)中的異常處理
- 23. ASP.NET 5中的全局異常處理
- 24. 如何處理ASP.NET中的WCF異常
- 25. 如何處理asp.net中的異常?
- 26. ASP.NET MVC 4中的異常處理5
- 27. ASP.NET Webforms中的異常處理
- 28. ASP.NET HttpHandler中的異常處理
- 29. 在asp.net核心處理異常?
- 30. 異常處理:多次處理異常
請將代碼發佈爲文本而不是屏幕截圖 –
我建議您放置一個斷點並查看實際發生的情況。我敢肯定,你會注意到沒有發生異常,並且你只是沒有進入while循環。另外,閱讀sql注入,你有安全風險。 –