tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: IOraField' から型 'String' へのキャストが有効ではありません。
投稿日: 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)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。