asp.net 에서 oracle 에 연결하는 방법은 여러가지가 있는데 평소에 쓰던 방법에서 본의 아니게 Data Provider 를 변경해야
되는 상황이 되어 버렸습니다.
보통은 아래와 같은 방법으로 Oracle DB 연결에 대한 부분을 처리 하는데
Imports System.Data.OleDb Dim DbCon As New OleDbConnection(Common.ConnectionString) Dim cmd As OleDbCommand Dim reader As OleDbDataReader
서버에 Oracle 10g client 를 설치하고 ODT with ODAC 11g 를 추가로 설치 했더니 DB 를 찾아가지를 못하더군요.
그래서 부랴부랴 DB 연결 부분을 MS 제공하는 공급자가 아닌 Oracle 에서 제공하는 공급자로 변경을 했는데 컬럼 타입이
long 타입 컬럼이 에러는 나지 않는데 데이터가 보이지가 않습니다.
구글신의 도움으로 해결은 했는데 해결방법이 의외로 간단합니다. ㅡ_ㅡ;
변경된 코드 입니다.
Imports Oracle.DataAccess.Client Dim DbCon As New OracleConnection(Common.ConnectionString) Dim cmd As OracleCommand Dim reader As OracleDataReader Dim sql As String DbCon.Open() sql = " SELECT longType컬럼 from 테이블 " cmd = New OracleCommand(sql, DbCon) cmd.InitialLONGFetchSize = 1000 '추가된 코드 reader = cmd.ExecuteReader()
위처럼 한줄 추가해주니 정상적으로 데이터 출력을 해줍니다. ㅜ_ㅜ
참고로 위 코드에 DB 연결 문자열도 Data Provider 에 따라 내용이 달라 집니다. 모두 한줄로 적어 주면 됩니다.
MS for Oracle Provider
Provider=MSDAOra.Oracle;User Id=계정;Password=비밀번호;
Data Source=DB이름;OLEDB.NET=True;SPPrmsLOB=False;NDatatype=False;
Oracle Provider 10g
Provider=OraOLEDB.Oracle.1;Password=비밀번호;Persist Security Info=True;User ID=계정;Data Source=DB이름
Oracle Provider 11g (정확히는 ODT with ODAC 11g)
DATA SOURCE=DB이름;PERSIST SECURITY INFO=False;USER ID=계정;Password=비밀번호