0

1年以上前に、.NetプログラムでDB2EBCDICデータを読み取ることについて質問しました。驚くほど役立つ答えには、VARCHAR列を読み取るためのルーチンが含まれていました。

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

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

ありがとう!

4

2 に答える 2

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 ドライバーを使用してデータベースにアクセスしていない特別な理由はありますか? これは、.MDF ファイルを解析して SQL サーバーから読み取るようなものです。


IBM Redbook |を参照してください。詳細については、DB2 for z/OS および OS/390 のラージ オブジェクトの章 4.4.1 LOB テーブル スペースの編成を参照してください。

于 2012-06-25T23:14:06.627 に答える
-2

これは、その方法のより詳細な説明ですhttp://ripalsni.wordpress.com/2008/07/24/how-do-i-read-write-oracle-clob-data-in-aspnet-or- vbnet/

ステップ 1: 参照を追加します – Oracle.Dataaccess.dll (ODP.NET にあります)

ステップ 2: 次の名前空間をインポートする

    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

完全なソース コード –</p>

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
于 2012-06-25T21:35:49.623 に答える