0

我有这个代码来更新数据库,但是当我用正确的数据运行它时,它执行没有错误,但数据库没有更新

 Dim conn As New SqlClient.SqlConnection(My.Resources.conn_str)
 Dim SQL As String = "Update vehicle SET make=@make,reg_no=@reg_no,model=@model,year=@year,type=@type,last_service=@last_service Where (id = @id)"
        conn.Open()
        Try
            Dim cmd As New SqlClient.SqlCommand(SQL, conn)
            Try
                cmd.Parameters.AddWithValue("@make", strMake)
                cmd.Parameters.AddWithValue("@reg_no", strRegnNum)
                cmd.Parameters.AddWithValue("@model", strModel)
                cmd.Parameters.AddWithValue("@year", intYear)
                cmd.Parameters.AddWithValue("@type", strType)
                cmd.Parameters.AddWithValue("@last_service", LastService)
                cmd.Parameters.AddWithValue("@id", ID.ToString)
                cmd.ExecuteNonQuery()
                cmd.Dispose()
            Catch ex As Exception
                Return ex.Message
            End Try
        Catch ex As Exception
            Return ex.Message
        Finally
            conn.Dispose()
        End Try

任何人都可以帮助我解决它不工作的原因,因为我没有收到错误消息?

谢谢

编辑我将cmd.ExecuteNonQuery()替换为

Dim intAffected As Integer = cmd.ExecuteNonQuery()
Debug.Print(intaffected)

我在输出窗口中得到 1

4

1 回答 1

2

一些想法:

  1. 如果您有权访问 SQL Profiler,则可以查看查询、值、结果、任何触发器、任何事务等。这是识别正在发生的事情的最简单方法。
  2. 如果您无权访问 Profiler,请更新您的查询以包含 OUTPUT 子句,并使用 ExecuteReader 将 insert.* 和 deleted.* 中的值返回到 SqlDataReader。检查结果。
  3. 如果 id 是 int,请不要在 parameter.AddWithValue 上使用 ID.ToString()。使用整数本身,因为带有字符串值的 AddWithValue 方法可能导致 ID 参数被配置为 varchar/nvarchar。
于 2012-04-17T00:42:51.450 回答