求大师看一下这一段update代码

摸鱼编程学 2011-12-18 04:55:39
Function pass(ByVal Aid As String, ByVal 旧密码 As String, ByVal 新密码 As String, ByVal 确认新密码 As String) As Integer
mycon.Open()
mycmd.Connection = mycon
mycmd.CommandText = "select * from Admin where Aid='" & Aid & "' and password='" & 旧密码 & "'"
reader = mycmd.ExecuteReader()
If reader.Read = False Then '若无返回记录
Return 0
ElseIf 新密码 = 确认新密码 Then
mycmd.CommandText = "update Admin set password='" & 新密码 & "' where Aid='" & Aid & "'"
mycmd.ExecuteNonQuery()
mycon.Close()
Return 1
Else
Return 0
End If
End Function

第一步的检查旧密码有用,但是第二个更新密码就不行了…
...全文
98 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongt1 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sp1234 的回复:]
VB.NET code
mycmd.CommandText = "select * from Admin where Aid='" & Aid.Replace("'", "''") & "' and password='" & 旧密码.Replace("'", "''") & "'"
[/Quote]++
挨着大神沾沾才气。大神正解。大神时刻提醒我们要注意单引
  • 打赏
  • 举报
回复
mycmd.CommandText = "select * from Admin where Aid='" & Aid.Replace("'", "''") & "' and password='" & 旧密码.Replace("'", "''") & "'"
  • 打赏
  • 举报
回复
哦,上面的代码还是比较差劲,拼接sql字符串时要处理Aid和“旧密码”中的单引号,也就是应该为:[code=VB.NETmycmd.CommandText] = "select * from Admin where Aid='" & Aid.Replace("'", "''") & "' and password='" & 旧密码.Replace("'", "''") & "'"[/code]
  • 打赏
  • 举报
回复
这个代码大致是这样写的:
Imports System.Data.Common

Public Class Class1

Shared connStr As String

Sub pass(ByVal Aid As String, ByVal 旧密码 As String, ByVal 新密码 As String, ByVal 确认新密码 As String)
Using mycon As New SqlClient.SqlConnection(connStr)
mycon.Open()
Dim mycmd As DbCommand = mycon.CreateCommand()
mycmd.CommandText = "select * from Admin where Aid='" & Aid & "' and password='" & 旧密码 & "'"
Dim reader As DbDataReader = mycmd.ExecuteReader()
If reader.Read = False Then Throw New Exception("没有记录。")

If 新密码 = 确认新密码 Then
mycmd.CommandText = "update Admin set password='" & 新密码 & "' where Aid='" & Aid & "'"
mycmd.ExecuteNonQuery()
Else
Throw New Exception("密码错误。")
End If
End Using
End Sub
End Class

其中最为关键地是每一次都要new一个新的DbConnection对象出来,这样才不至于因为共享mycon而悲剧地崩溃。
摸鱼编程学 2011-12-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 orain 的回复:]

要先把 reader 关掉才能执行新的命令
[/Quote]
ElseIf 新密码 = 确认新密码 Then
reader.Close()
mycmd.CommandText = "update Admin set password='" & 新密码 & "' where Aid='" & Aid & "'"
改成这样还是一样的错误…
orain 2011-12-18
  • 打赏
  • 举报
回复
要先把 reader 关掉才能执行新的命令

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧