繁体   English   中英

ASP.NET VB.NET — SQL UPDATE命令不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM