使用文本框更新 sql 数据库中的密码

Posted

技术标签:

【中文标题】使用文本框更新 sql 数据库中的密码【英文标题】:Updating Password in sql database using text-box 【发布时间】:2014-12-17 11:51:41 【问题描述】:

使用 ASP.NET 和 VB.NET 我尝试更新用户密码,它等于 sessionID

数据库使用的是 SQL Local。

这是 vb .net 代码

    Dim pass As String
    pass = tboxConFirmPass.Text

    Dim connce As SqlCeConnection = New SqlCeConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ToString())
    connce.Open() 'make the connection to DB
    Dim sqlCommand As String = "UPDATE [tbCustomer] SET [Password] = ('" _
                            + tboxConFirmPass.Text + "', '" + "WHERE [CustomerID] = @CustomerID" + "')"

    Dim cmd As SqlCeCommand = New SqlCeCommand(sqlCommand, connce)
    cmd.ExecuteNonQuery()

    connce.Close()
    MsgBox("Your Password has been chaged.")

End Sub

这里是SqlDataSource

UpdateCommand="UPDATE [tbCustomer] SET [Password] = @Password WHERE [CustomerID] = @CustomerID">

错误 = 解析查询时出错。 [令牌行号=1,令牌行偏移量=42,错误令牌=,]

【问题讨论】:

您没有提到代码遇到的错误或问题。简单地传递代码不会有帮助。 您遇到了什么问题?无论如何,这很容易受到 SQL 注入的攻击。而且您的 sqlCommand 文本看起来错误(引用错误的地方)。 错误是;解析查询时出错。 [令牌行号=1,令牌行偏移量=42,错误令牌=,] 我已尝试解决方案并收到此错误;缺少一个参数。 [ 参数序数 = 1 【参考方案1】:

是的,您的查询需要更改:

Dim sqlCommand As String = "UPDATE [tbCustomer] SET [Password] = '" _
                            & Replace(tboxConFirmPass.Text, "'", "''") & "' WHERE [CustomerID] = @CustomerID"

我已经对你的括号和引号不匹配进行了排序,将字符串连接运算符更改为 & 并放入转义符以减少 SQL 注入漏洞的可能性(如果有人在他们的密码中加上单引号,你的查询将不再跌倒,或更糟)。

要为@CustomerID 设置一个值,您需要向命令对象添加一个SQL 参数。如果您不给它一个值,您将收到评论中提到的错误。或者,您可以像使用密码一样连接值:

Dim sqlCommand As String = "UPDATE [tbCustomer] SET [Password] = '" _
                                & Replace(tboxConFirmPass.Text, "'", "''") & "' WHERE [CustomerID] = " & CustomerID

请注意,您需要使用一个以更改密码的客户 ID 进行初始化的变量。

【讨论】:

我已尝试上述解决方案并收到此错误;缺少一个参数。 [参数序数=1]

以上是关于使用文本框更新 sql 数据库中的密码的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 表中的值与文本框中的条目进行比较

C# - 上次编辑的文本框未保存到数据库

Access 数据库未通过 Vb.net 中的文本框更新

使用不同数量的文本框更新 mysql 数据库

PHP如何批量更新数据?急!!!

我可以使用未知数据根据另一个表中的数据更新 SQL 表吗? [关闭]