Tags
- Intellij
- postman collection
- web developer
- c#
- postman collection variables
- Android/iOS Developer
- MFC
- LSL_Script
- 우수한 프런트 개발자
- solidity
- postman csv
- postman automations
- 다빈치 리졸브
- 좋은 개발자
- Front-end developer
- UI/UX Engineer
- postman tests
- 프런트엔드
- Unity
- Android
- postman pre-request
- postman
- postman html parse
- emplace_back
- Java
- oracle
- postman session
- postman excel
- C++
- Interaction developer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Archives
- Today
- Total
david's daily developer note
Oracle .NET DataTableReader vs IDataReader 본문
728x90
공간질의를 통해서 , 선택된 레코드들의 값을 특정 응용프로그램에서 사용되는 데이터 타입으로 바꾸는 과정에서 ,
OracleDataAdapter dataAdapter = new OracleDataAdapter(sql, connectionString);
DataTableReader reader= dt.CreateDataReader();
if (reader.HasRows)
{
while (reader.Read())
{
}
}
else
선택된 레코드의 필드값을 가져오기 위해, ADO.NET과 ODP.NET에서
IDataReader와 DataTableReader 두개의 dataRader를 사용할 수 있다.
실험에서 10000,10000,10000(x,y,z)의 공간에 4~20개의 면으로 구성된1000개의 다면체가 있는 데이터 집합을 준비했다.
또한 수행된 질의에서 전체 공간의 20%의 크기에 4~20면체 50개를 질의하였다.
이 실험에서, dataRader는 DB와의 연결상태를 유지하기 때문에, ExecuteReader() 함수 리턴 시간보다.
dataRader.read()를 통한 데이터 접근에서 더 많은 시간을 소요 하였다
그 결과 앞에 설명한 데이터 셋에 대한 질의 수행결과는 122.0625(s)였다.
반면에 하나의 행과 열로 구성된 다수의 레코드들을 메모리 캐쉬형태로 들고 있다는 DataTableReader는
현재 개발중인 프로젝트의 전체 계층관계에 정확히 흡수되지는 못했지만, 수행 결과는 5.53125(s)으로 엄청난 차이를 보였다.
private void FetchDataTableReader()
{
string sql = "SELECT SDO_UTIL.TO_WKTGEOMETRY(boundedBy) as "boundedBy" FROM RoomType WHERE SDO_ANYINTERACT (boundary_footprint,sdo_util.from_wktgeometry( 'MULTIPOLYGON (((3364.2 10131.7, 535.8 11303.3, -2292.6 10131.7, -3464.2 7303.3, -2292.6 4474.9, 535.8 3303.3, 3364.2 4474.9, 4535.8 7303.3, 3364.2 10131.7)))'))='TRUE'";
{
string sql = "SELECT SDO_UTIL.TO_WKTGEOMETRY(boundedBy) as "boundedBy" FROM RoomType WHERE SDO_ANYINTERACT (boundary_footprint,sdo_util.from_wktgeometry( 'MULTIPOLYGON (((3364.2 10131.7, 535.8 11303.3, -2292.6 10131.7, -3464.2 7303.3, -2292.6 4474.9, 535.8 3303.3, 3364.2 4474.9, 4535.8 7303.3, 3364.2 10131.7)))'))='TRUE'";
string connectionString ="Data Source=(DESCRIPTION="
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME= ORCL)));"
+ "User Id=" + user + ";Password=" + passwd + ";"
DataTable dt = new DataTable();
dataAdapter .Fill(dt);
DataTableReader reader= dt.CreateDataReader();
if (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine( reader[“boundedBy”].ToString() );
}
}
else
Console.WriteLine("No Data");
}
MSDN
DataTableReaders는 하나 이상의 DataTable 개체 내용을 앞으로만 이동 가능한 하나 이상의 읽기 전용 결과 집합형식으로 가져옵니다.
IDataReader 는 데이터 소스에서 명령을 실행하여 얻은 결과 집합의 앞으로만 이동 가능한 스트림을 하나 이상 읽을 수 있는 수단을 제공하며,
관계형 데이터베이스에 액세스하는 .NET Framework 데이터 공급자에 의해 구현됩니다
728x90
'Develop (kids)' 카테고리의 다른 글
Oracle 11g Spatial 스키마, 인덱스 생성 SQL. (0) | 2010.08.27 |
---|---|
Apache - httpd.conf 한글 버전 (0) | 2010.08.19 |
오라클 데이타베이스 기반 .NET 애플리케이션의 구축 (0) | 2010.08.06 |
PostgreSQL PL/SQL CREATE FUNCTION (0) | 2010.07.01 |
PL/SQL 2. 다수의 SQL 수행 시간 측정하기. (0) | 2010.06.30 |