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

エラーメッセージが表示されないので、機能しない理由を誰か助けてもらえますか?

ありがとう

EDIT私はcmd.ExecuteNonQuery()

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

出力ウィンドウに1が表示されます

4

1 に答える 1

2

いくつかの考え:

  1. SQL プロファイラーにアクセスできる場合は、クエリ、値、結果、トリガー、トランザクションなどを確認できます。これは、何が起こっているのかを特定する最も簡単な方法です。
  2. Profiler にアクセスできない場合は、クエリを更新して OUTPUT 句を含め、ExecuteReader を使用して、insert.* および deleted.* からの値を SqlDataReader に返します。結果を確認します。
  3. ID が int の場合、parameter.AddWithValue で ID.ToString() を使用しないでください。AddWithValue メソッドに文字列値を指定すると、ID パラメータが varchar/nvarchar として構成される可能性があるため、整数自体を使用してください。
于 2012-04-17T00:42:51.450 に答える