使用Textbox和DropdownList更新SQL数据库中的数据

时间:2013-11-27 13:43:35

标签: vb.net

请帮忙,

ASPX Form背后的VB.Net代码。我有一个具有PartSN和Model字段的SQL表。 PartSN可以在表中存储两个条目。我想要做的是让代码在textbox1中输入时选择PartSN,并且只有当PartSN与下拉列表文本匹配时才更新为True。

我在此处的更新代码中收到错误:where "('" &** TextBox1.Text & "' =PartSN") , ('" & Dropdownlist1.Text & "' =Model")"

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE '" _
     & TextBox1.Text & "' =(PartSN)"

cmd.CommandText = "Update Table_Data SET TestComplete = @TestComplete where "('" _
  & TextBox1.Text & "' =PartSN") , ('" & Dropdownlist1.Text & "' =Model")"

cmd.CommandType = CommandType.Text

With cmd.Parameters
    .AddWithValue("@TestComplete", "True")

1 个答案:

答案 0 :(得分:0)

你在SELECT语句的WHERE子句中有向后的部分,你这样做:

SELECT PartSN FROM Table_data
WHERE 'ABC' = (PartSN)

那是无效的SQL,你需要把相等表达式的左边的字段名称放在一起,如下所示:

SELECT PartSN FROM Table_data
WHERE PartSN = 'ABC'

现在您的代码应如下所示:

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE PartSN = '" _
    & TextBox1.Text & "'"

  

注意:您的代码容易受到SQL注入攻击,因为WHERE子句使用文本框的Text属性中未经检查的值。换句话说,用户可以在页面的文本框中输入恶意数据库命令,它将针对数据库执行,例如';DROP TABLE users;--或类似的内容。

使用参数化SQL,如下所示:

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE PartSN = @PartSN"
cmd.Parameters.Add("@PartSN", SqlDbTypes.VarChar, 50).Value = TextBox1.Text
  

注意:您需要将@PartSN字段的长度从50更改为数据库中的长度。

更新:

您使用AND语句的WHERE子句中的SELECT条件的错误语法。

你正在做与此相同的事情:

SELECT PartSN FROM Table_data
WHERE (PartSN = 'ABC'), (Model = 'ABC')

WHERE子句的布尔逻辑使用ANDOR语法,如下所示:

SELECT PartSN FROM Table_data
WHERE PartSN = 'ABC' AND Model = 'ABC'

因此,要使用上面的参数化SQL解决方案,请执行以下操作:

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE PartSN = @PartSN AND Model = @PartSN"
cmd.Parameters.Add("@PartSN", SqlDbTypes.VarChar, 50).Value = TextBox1.Text
  

注意:您可能需要考虑将参数更改为比@PartSN更好的名称,因为它用于与PartSN列和Model列进行比较。