答案 0 :(得分:1)
<强>问题强>
item_code
,您的代码将不抛出错误。它根本不会进入while
循环。item_code
是否存在的正确方法是检查datareader是否有结果。 ';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
说实话,你的代码有一些“错误”,但这应该让你朝着正确的方向前进。
答案 1 :(得分:0)
该行:
Response.Write(<script>alert('The ...')</script>)
需要(注意引号):
Response.Write("<script type='text/javascript'>alert('The ...')</script>")
顶部的另一个相同,但我认为这不会解决您的整体问题。
相反,使用这样的javascript:
if(!alert('Whoops!')){window.location.reload();}
弹出警告框,然后在点击按钮后重新加载页面。