|
分類:[.NET 全般]
いつも勉強させていただいてます。
VB6⇒VB.NETへのコンバージョンについてご相談させていただきます。
データベースアクセスがoo4oからodp.netへ変換しないといけません。
oo4oのアクセス部分をそれぞれ、odp.netのクラスに機械的に変換すれば全く可能であることはわかっているのですが、もっと楽にする方法はないかと考えています。
そこで、oo4oの定義クラスのメソッド・プロパティをodp.netの同義のメソッド・プロパティに変換するラッピングクラスを作成すれば、oo4oのデータアクセス部分をコーディング変更なしで従来と同じ結果が取得できないかと。
oo4oのクラス:odp.netのクラス
OraSessionClass ⇒ OracleConnection
OraDatabase ⇒ OracleConnection
OraDynaset ⇒ OracleDataReader
1)現行oo4oの参照ライブラリを削除
2)oo4oのクラスでエラーが発生する
3)自作でoo4oのクラスを作成
4)oo4oの各クラスのメソッド、プロパティをope.netの同様の内容に変換するラッピングクラスとする
上記で、理屈上、oo4oのアクセス方法で、実際のDBアクセスはodp.netが行うといったことが可能だと思うのですが、いかがでしょうか。
Namespace OracleInProcServer
Public Enum dbOption
ORADB_DEFAULT = &H0&
End Enum
Public Enum dynOption
ORADYN_DEFAULT = &H0&
End Enum
'oo4oのOraSessionClassラッピングクラス
Public Class OraSessionClass
'ODP.NETのクラス
Public oraConnection As Oracle.DataAccess.Client.OracleConnection
Public Function OpenDatabase(ByVal service As String, ByVal userpass As String, ByVal type As dbOption) As OraDatabase
'・・・・
'・・・・
'・・・・
Return New OraDatabase
End Function
End Class
'oo4oのOraDatabaseラッピングクラス
Public Class OraDatabase
'ODP.NETのクラス
Public oraConnection As Oracle.DataAccess.Client.OracleConnection
Public Function CreateDynaset(ByVal strSQL As String, ByVal type As dynOption) As OraDynaset
'・・・・
'・・・・
'・・・・
Return New OraDynaset
End Function
End Class
'oo4oのOraDynasetラッピングクラス
Public Class OraDynaset
Public dataReader As Oracle.DataAccess.Client.OracleDataReader
'・・・・
'・・・・
'・・・・
End Class
End Namespace
方向性は、上記のようにoo4oと全く同じクラスを用意すれば、DBアクセス部分は変更なしで、済むはず・・。
と、思っているのですが、可能でしょうか?
OraSessionClassとOraDatabaseは何となく想像がつくのですが、OraDynasetのFields辺りのデータ取得の部分のイメージがわかないです。
方向性だけでも結構ですのでご教授しただけたらと思います。
※一部VB6独自の特殊なデータの取得(OraDynaset.Fields!Doc_1)などは、さすがに手作業で変換しないといけないと思ってます。
|