Class内部にTableもつのなら、Open、Closeにして、メモリ解放できるようにしたほうがいい気がしてきた…。
そろそろマジメにインターフェイスを考えよう。
Public Class SetDBtoTable '---------- 'Variable '---------- Private _Provider As String Private _DataSource As String Private _ConnectionString As String Private _UserID As String Private _Password As String Private _RecordCount As Long Private _ColumnCount As Long ' Private _DataTable[][] As String 'テーブルデータ格納場所 '---------- 'Property '---------- Public Property Provider As String Get Return _Provider End Get Set(value As String) _Provider = value End Set End Property Public Property DataSource As String Get Return _DataSource End Get Set(value As String) _DataSource = value End Set End Property Public Property ConnectionString As String Get Return _ConnectionString End Get Set(value As String) _ConnectionString = value End Set End Property Public Property UserID As String Get Return _UserID End Get Set(value As String) _UserID = value End Set End Property Public Property Password As String Get Return _Password End Get Set(value As String) _Password = value End Set End Property Public ReadOnly Property RecordCount As Long Get Return _RecordCount End Get End Property Public ReadOnly Property ColumnCount As Long Get Return _ColumnCount End Get End Property '---------- 'Constructor '---------- Public Sub New() Debug.Print("Constructor:" & TypeName(Me)) _Provider = "Microsoft.Jet.OLEDB.4.0;" End Sub '---------- 'Destructor '---------- Private Sub Class_Terminate() Debug.Print("Destructor:" & TypeName(Me)) End Sub '---------- 'Method '---------- Public Function GetTable() As Boolean Dim OnOK As Boolean = True Dim cn As ADODB.Connection Dim rs As ADODB.Recordset cn = New ADODB.Connection rs = New ADODB.Recordset cn.Provider = _Provider '_ConnectionStringが空か確認。空であればエラーを吐きFalseを返してMethod終了 If _ConnectionString = Nothing Then Debug.Print("ERROR:" & TypeName(Me) & ":ConnectionString Property Not Assignment”) OnOK = False Return OnOK End If 'DataSourceが空か確認。空であればエラーを吐きFalseを返してMethod終了 If _DataSource = vbNullString Then Debug.Print("ERROR:" & TypeName(Me) & ":DataSource Property Not Assignment”) OnOK = False Return OnOK End If 'DataSource設定(テーブ名やSQL。DELETEとか書かれても、rs.open()のときにReadOnlyで開くからはじけると思う cn.Properties("Data Source").Value = _DataSource 'ID/Passwd設定(試してない If _UserID <> Nothing Then cn.Properties("UserID").Value = _UserID End If If _Password <> Nothing Then cn.Properties("Password").Value = _Password End If Try cn.Open() rs.Open(_ConnectionString, cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockReadOnly) _RecordCount = rs.RecordCount _ColumnCount = rs.Fields.Count rs.Close() cn.Close() Catch ex As Exception 'Try中のエラーのとき Debug.Print("ERROR:" & TypeName(Me) & ":DB or RS Open failed”) OnOK = False End Try Return OnOK End Function End Class
<<前 次>>
0 件のコメント:
コメントを投稿