vb.net SQL Server 中的更新语句

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/14631363/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 12:07:28  来源:igfitidea点击:

Update Statement in SQL Server

vb.netsql-server-2008records

提问by coder

I am trying to update some records after a new record was inserted where it was not updating and I'm not getting any error.

我试图在插入新记录后更新一些记录,但没有更新,我没有收到任何错误。

Here is my code:

这是我的代码:

    If txtSearch.Text <> txtUserID.Text Then
        Try
            Dim connectionString As String = "Data Source=.\SqlExpress;Initial Catalog=Subscription;Integrated Security=True"
            Using cn As New SqlConnection(connectionString)
                cn.Open()
                cmd.CommandText = "INSERT INTO Customers (UserID, RegisteredDate, ExpiryDate, FirstName, LastName, Address, State, City, Phone, Mobile, Email) VALUES(@UserID, @RegisteredDate, @ExpiryDate, @FirstName, @LastName, @Address, @State, @City, @Phone, @Mobile, @Email)"

                Dim param1 As New SqlParameter()
                param1.ParameterName = "@UserID"
                param1.Value = txtUserID.Text.Trim()
                cmd.Parameters.Add(param1)

                Dim param2 As New SqlParameter()
                param2.ParameterName = "@RegisteredDate"
                param2.Value = RegisteredDate.Value
                cmd.Parameters.Add(param2)

                Dim param3 As New SqlParameter()
                param3.ParameterName = "@ExpiryDate"
                param3.Value = ExpiryDate.Value
                cmd.Parameters.Add(param3)

                Dim param4 As New SqlParameter()
                param4.ParameterName = "@FirstName"
                param4.Value = txtFirstName.Text.Trim()
                cmd.Parameters.Add(param4)

                Dim param5 As New SqlParameter()
                param5.ParameterName = "@LastName"
                param5.Value = txtLastName.Text.Trim()
                cmd.Parameters.Add(param5)


                Dim param6 As New SqlParameter()
                param6.ParameterName = "@Address"
                param6.Value = txtAddress.Text.Trim()
                cmd.Parameters.Add(param6)

                Dim param7 As New SqlParameter()
                param7.ParameterName = "@State"
                param7.Value = cboState.SelectedItem.ToString
                cmd.Parameters.Add(param7)

                Dim param8 As New SqlParameter()
                param8.ParameterName = "@City"
                param8.Value = cboCity.SelectedItem.ToString
                cmd.Parameters.Add(param8)

                Dim param9 As New SqlParameter()
                param9.ParameterName = "@Phone"
                param9.Value = txtPhone.Text.Trim()
                cmd.Parameters.Add(param9)

                Dim param10 As New SqlParameter()
                param10.ParameterName = "@Mobile"
                param10.Value = txtMobile.Text.Trim()
                cmd.Parameters.Add(param10)

                Dim param11 As New SqlParameter()
                param11.ParameterName = "@Email"
                param11.Value = txtEmail.Text.Trim()
                cmd.Parameters.Add(param11)

                cmd.Connection = cn
                cmd.ExecuteNonQuery()
                cn.Close()
            End Using
            Successlbl.Show()
            Successlbl.ForeColor = Color.DarkBlue
            Successlbl.Text = "Record Saved Successfully!."

        Catch
            Successlbl.Show()
            Successlbl.ForeColor = Color.Red
            Successlbl.Text = "Error in creating record!"
        End Try
    Else
        Try
            Dim connectionString As String = "Data Source=.\SqlExpress;Initial Catalog=Subscription;Integrated Security=True"
            Using cn As New SqlConnection(connectionString)
                cn.Open()
                cmd.CommandText = "UPDATE Customers SET (UserID, RegisteredDate, ExpiryDate, FirstName, LastName, Address, State, City, Phone, Mobile, Email) VALUES(@UserID, @RegisteredDate, @ExpiryDate, @FirstName, @LastName, @Address, @State, @City, @Phone, @Mobile, @Email) WHERE UserID=" & txtUserID.Text & ""

                Dim param1 As New SqlParameter()
                param1.ParameterName = "@UserID"
                param1.Value = txtUserID.Text.Trim()
                cmd.Parameters.Add(param1)

                Dim param2 As New SqlParameter()
                param2.ParameterName = "@RegisteredDate"
                param2.Value = RegisteredDate.Value
                cmd.Parameters.Add(param2)

                Dim param3 As New SqlParameter()
                param3.ParameterName = "@ExpiryDate"
                param3.Value = ExpiryDate.Value
                cmd.Parameters.Add(param3)

                Dim param4 As New SqlParameter()
                param4.ParameterName = "@FirstName"
                param4.Value = txtFirstName.Text.Trim()
                cmd.Parameters.Add(param4)

                Dim param5 As New SqlParameter()
                param5.ParameterName = "@LastName"
                param5.Value = txtLastName.Text.Trim()
                cmd.Parameters.Add(param5)


                Dim param6 As New SqlParameter()
                param6.ParameterName = "@Address"
                param6.Value = txtAddress.Text.Trim()
                cmd.Parameters.Add(param6)

                Dim param7 As New SqlParameter()
                param7.ParameterName = "@State"
                param7.Value = cboState.SelectedItem.ToString
                cmd.Parameters.Add(param7)

                Dim param8 As New SqlParameter()
                param8.ParameterName = "@City"
                param8.Value = cboCity.SelectedItem.ToString
                cmd.Parameters.Add(param8)

                Dim param9 As New SqlParameter()
                param9.ParameterName = "@Phone"
                param9.Value = txtPhone.Text.Trim()
                cmd.Parameters.Add(param9)

                Dim param10 As New SqlParameter()
                param10.ParameterName = "@Mobile"
                param10.Value = txtMobile.Text.Trim()
                cmd.Parameters.Add(param10)

                Dim param11 As New SqlParameter()
                param11.ParameterName = "@Email"
                param11.Value = txtEmail.Text.Trim()
                cmd.Parameters.Add(param11)

                cmd.Connection = cn
                cmd.ExecuteNonQuery()
            End Using
            Successlbl.Show()
            Successlbl.ForeColor = Color.DarkBlue
            Successlbl.Text = "Record updated Successfully!."

        Catch
            Successlbl.Show()
            Successlbl.ForeColor = Color.Red
            Successlbl.Text = "Error in updating record!"
        End Try
    End If

Can anyone say me where am I going wrong?

谁能告诉我我哪里错了?

回答by marc_s

Your UPDATEstatement is all wrong for SQL Server / T-SQL. You cannot use the same syntax as the INSERTstatement does. Read more about what the detailed syntax of UPDATEis on MSDN SQL Server Books Online.

你的UPDATE说法对于 SQL Server / T-SQL 都是错误的。您不能使用与INSERT语句相同的语法。UPDATEMSDN SQL Server 联机丛书中阅读有关详细语法的更多信息。

You need to specify:

您需要指定:

UPDATE dbo.Customers 
SET 
   RegisteredDate = @RegisteredDate, 
   ExpiryDate = @ExpiryDate, 
   FirstName = @FirstName, 
   LastName = @LastName, ...... -- and so on for all relevant columns
WHERE UserID = @UserID

Also: you're using parameters everywhere (+1 for that!), but notfor the WHEREclause.... change that!

另外:您正在使用参数到处(+1为!),但WHEREthat从句....改变!

回答by user3167664

    Try
        If con.State = ConnectionState.Open Then con.Close()
        con.Open()
        global_command = New SqlCommand("UPDATE products_tbl set running_no = '" & txt_running.Text & "' where template_code = 'n'and prod_no = '" & txt_product.Text & "'", con)
        global_command.ExecuteNonQuery()
        global_command.Dispose()

        MsgBox("Successfully updated!", MsgBoxStyle.Information, "Message")
        where = vbNullString

    Catch ex As Exception
        MsgBox("Trace No 4: System Error or Data Error!" + Chr(13) + ex.Message + Chr(13) + "Please Contact Your System Administrator!", vbInformation, "Message")
    End Try

End Sub