タイトル | : Re: IOraField' から型 'String' へのキャストが有効ではありません。 |
記事No | : 1472 |
投稿日 | : 2005/03/15(Tue) 16:03 |
投稿者 | : 魔界の仮面弁士 |
> VB6+oo4oをVB.NETに移行しています。 COMオブジェクトの解放処理が面倒かも……。 ODP.NET等に移行した方が楽なのでは?
> sSS$ = P_ORA.Fields("USER_ID") ← カラム名を直指定して値取得のイメージ 『Valueプロパティ』を使う必要がありますね。 VB6 と違って、VB.NET では、「引数の無い Default Property」は省略できません。
とりあえず、こんな感じで。
'Oracleへの接続 Dim OraSession As OracleInProcServer.OraSession OraSession = New OracleInProcServer.OraSessionClass Dim OraDatabase As OracleInProcServer.OraDatabase OraDatabase = DirectCast(OraSession.OpenDatabase(Server, User & "/" & Pass, 1), OracleInProcServer.OraDatabase)
'SELECT文を発行 Dim Dyn As OracleInProcServer.OraDynaset Dyn = DirectCast(OraDatabase.CreateDynaset("SELECT * FROM DUAL", 0), OracleInProcServer.OraDynaset)
'後から、ReleaseComObjectにて Fieldsオブジェクトを '解放する必要があるため、変数にキャッシュしておく Dim Fs As OracleInProcServer.OraFields Fs = DirectCast(Dyn.Fields, OracleInProcServer.OraFields)
'後から、ReleaseComObjectにて Fieldオブジェクトを '解放する必要があるため、変数にキャッシュしておく Dim F As OracleInProcServer.OraField F = DirectCast(Fs("DUMMY"), OracleInProcServer.OraField)
'文字列型で取得 Dim S As String Do Until Dyn.EOF S = CStr(F.Value) '★FieldオブジェクトのValueプロパティ Trace.WriteLine(S) Dyn.MoveNext() Loop
'COMオブジェクトの解放処理 System.Runtime.InteropServices.Marshal.ReleaseComObject(F) System.Runtime.InteropServices.Marshal.ReleaseComObject(Fs) System.Runtime.InteropServices.Marshal.ReleaseComObject(Dyn) System.Runtime.InteropServices.Marshal.ReleaseComObject(OraDatabase) System.Runtime.InteropServices.Marshal.ReleaseComObject(OraSession)
|