数据库更新sql不影响数据库

时间:2012-04-17 00:20:20

标签: asp.net .net sql sql-server-2005

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

 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

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

感谢

EDIT 我用

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

我在输出窗口中得到1

1 个答案:

答案 0 :(得分:2)

一些想法:

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