- PR -

ldbファイルが残る

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-27 09:17
引用:

NEOさんの書き込み (2007-04-27 07:59) より:

毎回残るわけではないのが厄介なんですよ。


たとえば、例外を握りつぶすような機構になっているなど、
様々な可能性が考えられますが、詳細な実装が見えないのでこれ以上回答できません。

現象が再現できる最小のソースコードを提示して頂けませんか?

引用:

じゃんぬねっとさんの書き込み (2007-04-26 09:50) より:

その通りのソースを書いているのであれば、間違っていないでしょう。

引用:

私は "MDB を作成して" の部分にこそ問題があるのではないかと推測します。
これに関しては手順が示されていないので、推測の域を超えないですけども。


これらは、「情報の出し惜しみはしないでください」 という意図で書いています。

私はあなたの隣のいる人ではないので、明示的に書かれていないところについて、
「可能性の削除」 「問題の切り分け」 をすることができません。(あるいは容易でないです)
経験および知識から 「疑いの目」 を持ち可能性を探ることくらいしかできません。

客観的でかつ明示的な情報の提示をお願いします。
閲覧者は 'あなたよりも原因が探り難い場所にいる' ということを忘れないでください。
逆に言えば 'あなたが最も原因を探りやすい場所にいる' ということです。

# 久しぶりにこんなことを書いてしまいました...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2007-04-28 13:05
ソースを持って帰ると情報漏えいで罰せられるので、ソースそのままを載せる事できませんが、書いてみます。

・データベースアクセスクラス
コード:
Public Class MyDAO
    Structure Params
        Public targetName As String
        Public targetValue As Object
        Public targetType As OleDbType
        Public Size As Long
    End Structure

    Private oConn as OleDbConnection

   Public Function Open(mdb as String)
    oConn = New OleDbConnection
      oConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + mdb
      oConn.Open
    End Function

    Public Sub Close()
      If oConn IsNot Nothing Then
        oConn.Close
        oConn.Dispose
      End If
    End Sub

    Private Sub Insert(ByVal sql As String, ByVal paramList As ArrayList)
        Dim oComm As New OleDbCommand

        Try
            oComm.Connection = oConn
            oComm.CommandText = sql

            For ix As Integer = 0 To paramList.Count - 1
                Dim p As Params = DirectCast(paramList(ix), Params)
                oComm.Parameters.Add(New OleDbParameter("@" + p.targetName, p.targetType))
                oComm.Parameters("@" + p.targetName).Value = p.targetValue
                oComm.Parameters("@" + p.targetName).Size = p.Size
            Next

            oComm.ExecuteNonQuery()
        Finally
            oComm.Dispose()
            oComm = Nothing
        End Try
    End Sub
End Class



・メインクラス
コード:
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim file as String = "C;\test.mdb"
       Dim dao as New MyDAO
       Dim sql as New StringBuilder
       Dim list as New ArrayList

       Try
          If dao.Open(file) = False Then Return

            sql.Append("INSERT INTO ")
            sql.Append("Table1")
            sql.Append("(")
            sql.Append("Column0")
            sql.Append(",Column1")
            sql.Append(",Column2")
            sql.Append(") VALUES (")
            sql.Append("@Column0")
            sql.Append(",@Column1")
            sql.Append(",@Column2")
            sql.Append(")")

            For ix As Integer = 0 To 2
                Dim p as MyDAO.Params
                p.target = "Column" + ix.ToString()
                p.targetValue = ix
                p.targetType = OleDbType.Double

                list.Add(p)
            Next

            dao.Insert(sql.ToString,list)
       Finally
            If dao IsNot Nothing Then
               dao.Close
               dao = Nothing
            End If
       End Try
    End Sub
End Class



同じことをやっても、起こるときと起こらないときがあります。

スキルアップ/キャリアアップ(JOB@IT)