使用文本框更新 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 数据库中的密码的主要内容,如果未能解决你的问题,请参考以下文章