Quantcast
Channel: OKWAVE 最新質問(Visual Basic/257)【本日】
Viewing all articles
Browse latest Browse all 6510

Disposeの動き

$
0
0
VB2010でプログラム開発を行っています。 VB2010は初心者で、インターネットを使って調べながら構築していますので、ほとんど意味を理解していない状態です。 この度下記の文を書いたのですが、Point1で「Cmd.Dispose() 」を入れないとPoint2で「OleDbException が発生しました エラーを特定できません」のエラーになってしまいます。 そこで2つの疑問が出てきたので教えていただけないでしょうか。 疑問1: なぜ、Point1でDisposeしないとエラーになってしまうのか。 疑問2: Point1でDisposeすると、内容が破棄されると思っていたのですが、そのまま処理が進むようです。 なぜ、再度「Dim Cmd As New OleDbCommand」の宣言が必要無く、トランザクションも続いているのでしょうか。 また、よりスマートな書き方があればご教授いただけるとありがたいです。 よろしくお願いします。 Module Module1   Public Con As New OleDbConnection   Public Cmd As New OleDbCommand   Public bTrans As OleDb.OleDbTransaction   Public sb As New System.Text.StringBuilder() End Module Private Sub Btn_Kanryo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Kanryo.Click   Dim ExResult AS Integer        '新規トランザクションの開始。        bTrans = Con.BeginTransaction        'コマンドオブジェクトにトランザクション関連付け        Cmd.Transaction = bTrans        'DB更新1        sb = New System.Text.StringBuilder        sb.AppendLine("UPDATE A ")        sb.AppendLine("SET")        sb.AppendLine(" A_AA = '1'")        sb.AppendLine(" WHERE")        sb.AppendLine(" A_BB='123'")        Cmd.Connection = Con        Cmd.CommandText = sb.ToString        ExResult = Cmd.ExecuteNonQuery()        'ストアドプロシージャ―処理        Cmd.Connection = Con        Cmd.CommandType = CommandType.StoredProcedure        Cmd.CommandText = "AAA.ABC"        Dim outPara As New OleDbParameter("ERR_FLG", OleDbType.Decimal)        outPara.Direction = ParameterDirection.Output        Cmd.Parameters.Add(outPara)        Cmd.ExecuteNonQuery() Point1⇒ Cmd.Dispose()        'DB更新2        sb = New System.Text.StringBuilder        sb.AppendLine("DELETE ")        sb.AppendLine(" B")        sb.AppendLine(" WHERE ")        sb.AppendLine(" B_AA='1'")        Cmd.Connection = Con        Cmd.CommandText = sb.ToString Point2⇒ ExResult = Cmd.ExecuteNonQuery()        bTrans.Commit() End Sub

Viewing all articles
Browse latest Browse all 6510

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>