2012-05-09 2 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

Thenks을 듣고 기뻐하지만, 태그가 명확하게 말한대로, 나는 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

,536,913,632 10
* . . . + . . . . 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