2012-05-09 9 views
0

さらに1年前に、.NetプログラムでDB2 EBCDICデータを読むことについて尋ねました。驚くほど役に立ちましたanswerには、VARCHARカラムを読み込むルーチンが含まれていました。バイナリー・ダウンロードからdb2 clobを読む

私は現在、CLOB列の読み取りに直面しています。

最初の単語に実際のサイズが含まれている点で内部構造が似ていますか? CLOBの可能な長さがはるかに大きいことを考慮すると、全体の言葉ですか?

ありがとうございます!輸入次の名前空間:

ステップ2(ODP.NETで見つかった)Oracle.Dataaccess.dllを - 参照を追加します。

+0

VarCahrの場合、最初の2バイトはCLOBの実際のサイズを保持しますが、それは最初の4バイトです。確認や他のことを聞いてうれしいです... – GilShalit

答えて

-2

これには、http://ripalsoni.wordpress.com/2008/07/24/how-do-i-read-write-oracle-clob-data-in-aspnet-or-vbnet/

ステップ1が行う方法のはるかに詳細な説明があります

Imports Oracle.DataAccess.Client 
    Imports Oracle.DataAccess.Types 

ステップ3:接続文字列を作成します

Public ReadOnly connectionstring = "data source = oradb;user id = rmsoni;password=rmsoni99" 

ステップ4:パブリックメソッド

Public Sub ReadLOBData() 
Dim con As New OracleConnection(connectionstring) 
con.Open() 
Dim sql As String = "select CLOBTEXTFIELD from TestCLOB where ID=1" 
Dim cmd As OracleCommand = New OracleCommand(sql, con) 
Dim dr As OracleDataReader = cmd.ExecuteReader() 
dr.Read() 
Dim blob As OracleClob = dr.GetOracleClob(0) 
txtOutput.Text = blob.Value() 
blob.Close() 
dr.Close() 
con.Close() 
End Sub 

完全なソースコードに続い作成は -

Public Sub WriteLOBData() 
Dim connection As New OracleConnection(connectionstring) 
connection.Open() 

Dim strSQL As String = "INSERT INTO TestCLOB (ID,CLOBTEXTFIELD) VALUES (1,:TEXT_DATA) " 
Dim paramData As New OracleParameter 
paramData.Direction = ParameterDirection.Input 
paramData.OracleDbType = OracleDbType.Clob 
paramData.ParameterName = "TEXT_DATA" 
paramData.Value = txtInput.Text 

Dim cmd As New OracleCommand 
cmd.Connection = connection 
cmd.Parameters.Add(paramData) 
cmd.CommandText = strSQL 
cmd.ExecuteNonQuery() 

paramData = Nothing 
cmd = Nothing 
connection.Close() 
End Sub 
+2

詳細な答えはありますが、タグには明らかにDB2データ用にこれを行う必要があります。 – GilShalit

0

メインフレームが、DB2/400(ミッドレンジ)は、テーブル自体から外部にCLOBフィールドを保存するために表示されない:

CREATE TABLE QTEMP/T1 (F1 CLOB(512)) 
INSERT INTO QTEMP/T1 (F1) VALUES ('TEST') 

SELECT * FROM QTEMP/T1 

F1 
*POINTER 

DSPPFM QTEMP/T1

* . . . + . . . . 1 . . . . + . . . . 2 . . . . + . . . . 3 . . 
00000000 00000000 00000000 00000000 5CD7D6C9 D5E3C5D9 40404040 40404040 

*...+....1....+....2....+....3.. 
*POINTER 

DB/2 driverを使用してこれらの詳細をすべて処理する特別な理由はありますか?これは、.MDFファイルを解析することによってSQLサーバーから読み込むようなものです。


詳細については、IBM Redbooks | Large Objects with DB2 for z/OS and OS/390章4.4.1 LOB表スペースの組織を参照してください。

+0

理由は、銀行のメインフレームへの直接リンクを行う許可を得ることは、私のセールスプロセスが依存してほしいものではないということです。 – GilShalit