[英]ASP.NET VB.NET — SQL UPDATE Command Not Working
我已经在这个特定问题上工作了几天,并且在SO,MSDN和其他Google搜索中进行搜索并没有任何用处。 我正在尝试对SQL表进行简单的更新。 我的SELECT和INSERT语句都可以正常工作,但是由于某些原因,此更新将无法工作。 我已经设置了断点并逐步执行,并且代码似乎运行良好-.ExecuteNonQuery()触发后,从未捕获到Catch ex Exception。
谁能给我一个为什么我无法获得SQL更新的想法?
Protected Sub SaveButton_Click(sender As Object, e As EventArgs) Handles SaveButton.Click
Dim currentUser = Membership.GetUser(User.Identity.Name)
Dim username As String = currentUser.UserName
Dim userId As Guid = currentUser.ProviderUserKey
UserNameTextBox.Text = username
' Get Root Web Config Connection String so you don't have to encrypt it
Dim rootWebConfig As System.Configuration.Configuration
rootWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/")
Dim connString As System.Configuration.ConnectionStringSettings
connString = rootWebConfig.ConnectionStrings.ConnectionStrings("LocalSqlServer")
Dim conn As String = connString.ToString
Dim commandString As String = "UPDATE UserDetails SET FirstName ='" + FirstNameTextBox.Text + "' WHERE UserId ='" + userId.ToString + "'"
Dim fname As String = FirstNameTextBox.Text
Dim commandText As String = "UPDATE UserDetails SET FirstName=@firstname WHERE UserId=@UID;"
Using connection As New SqlConnection(conn)
Dim command As New SqlCommand(commandText, connection)
command.CommandType = CommandType.Text
' Add UserId parameter for WHERE clause.
command.Parameters.Add("@UID", SqlDbType.UniqueIdentifier).Value = userId
' command.Parameters("@UID").Value = userId
' command.Parameters.AddWithValue("@UID", userId)
' Use AddWithValue to assign Demographics.
command.Parameters.Add("@firstname", SqlDbType.VarChar, 255).Value = fname
'command.Parameters.AddWithValue("@firstname", fname)
' command.Parameters("@firstname").Value = FirstNameTextBox.Text.ToString
Try
connection.Open()
command.ExecuteNonQuery()
Dim rowsAffected As Integer = command.ExecuteNonQuery()
Console.WriteLine("RowsAffected: {0}", rowsAffected)
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
connection.Close()
End Try
End Using
End Sub
您正在运行“ command.ExecuteNonQuery()”两次,这意味着第二次执行可能会返回受影响的0行,因为您已经更新了需要更新的内容,这就是您要分配给rowsAffected的内容。 您确定没有发生UPDATE吗?
编辑:关于您的评论,您在LoadUser时是否检查过IsPostBack? 如果没有,那么当您单击SaveButton时,将要重新加载现有值,然后将使用这些现有值进行更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.