|
分類:[.NET 全般]
VB6でORACLE接続に関する部分をクラス化してました。 それをVB.NET若しくはC#で同様なクラスを作成したいと思っているのですが、 参考になるサイトなどが無くどのように書き換えればいいのか まったく判りません。
わかる方がいましたら教えて頂きたく宜しくお願い致します
VB6のクラス
Private G_OraSs As Object 'Oracleセクション Private G_OraDb As Object 'Oracleデータベース Private G_OraRs As Object 'Oracleダイナセット
'プロパティ(読み取り専用) Private LFieldCount As Long 'SQLのフィールド数 Private LRecordCount As Long 'SQLのレコード数
'#######################[ property ]############################ Public Property Get FieldCount() As Long FieldCount = LFieldCount End Property
Public Property Get RecordCount() As Long RecordCount = LRecordCount End Property
'########################[ events ]############################
'{Oracleデータベースに接続} Public Function DBOpen(OraDatabaseName As String, _ OraUserName As String, _ OraPassword As String) As Boolean DBOpen = True '正常終了時の戻り値 On Error Resume Next 'Error無視 'Oracleセッション参照作成 Set G_OraSs = CreateObject("OracleInProcServer.XOraSession") If Err <> 0 Then '接続失敗したら DBOpen = False 'エラー戻り値セット Else '接続成功したら '指定OracleDBオープン Set G_OraDb = G_OraSs.OpenDatabase(OraDatabaseName, OraUserName & "/" & OraPassword, 0&) If Err <> 0 Then 'DBオープンが失敗したら DBOpen = False 'エラー戻り値セット End If End If
On Error GoTo 0 End Function
'{SQL実行 update, add} Public Function SQL_Updata(ByVal strSql As String) As Boolean Dim Record As Variant Dim flg As Boolean On Error GoTo AddUpErr flg = True '成功 G_OraSs.BeginTrans Record = G_OraDb.dbexecutesql(strSql) G_OraSs.CommitTrans 'コミット 'G_OraSs.Rollback 'ロールバック exitExec: SQL_Updata = flg Exit Function AddUpErr: flg = False Resume exitExec:
End Function
'{SQL実行 select} Public Function SQL_Run(ByVal strSql As String) As Long
Dim i As Integer 'カウンタ Dim f_count As Integer 'SQLのフィールド数 Dim line As String 'カンマ文字列 Dim edpno As String Dim ItemNo As Integer Dim tmp As String
On Error Resume Next LRecordCount = 0 Set G_OraRs = G_OraDb.CreateDynaset(strSql, 0&) '参照クエリーを実行(レコードセットが帰る) If Err <> 0 Then '実行失敗? G_OraRs.Close 'レコードをクローズ Else '実行成功 If G_OraRs.EOF = False Then 'データあり? LFieldCount = G_OraRs.Fields.Count 'フィールド数 LRecordCount = G_OraRs.RecordCount 'レコード数 G_OraRs.MoveLast 'カーソル全移動して G_OraRs.MoveFirst 'カーソルを確定 End If End If SQL_Run = LRecordCount '結果を返す End Function
'ダイナセットクリア Public Sub DynasetClear() 'G_OraRs.Clear Set G_OraRs = Nothing End Sub
■特にこの部分が知りたいです データの前後を取りたいときなどがあるため、このような方法は必須なんです '指定されたレコードを返す Public Function ItemCells(ARow As Long, acol As Long) As String
On Error GoTo ItemErr G_OraRs.MoveTo (ARow) ItemCells = CStr(G_OraRs.Fields(acol).Value) Exit Function
ItemErr: ItemCells = vbNullString
End Function
'指定されたフィールド名を取得 Public Function FieldName(ACool As Long) As String On Error GoTo Err_Filed FieldName = G_OraRs.FieldName(ACool) Exit Function
Err_Filed: FieldName = ""
End Function
'レコードセットクローズ Public Sub RecordSetClose() On Error Resume Next G_OraRs.Close Set G_OraRs = Nothing End Sub
'{Oracle切断} Public Sub DBClose() On Error Resume Next Call RecordSetClose G_OraDb.Close Set G_OraDb = Nothing Set G_OraSs = Nothing On Error GoTo 0 End Sub
|