ADO.NET SqlDataReader class 정보통신공학부 2005732080 최원호
Contents SqlReaderClass How to use Depth, FeildCount IsClosed (v) Item (v) RecordAffected Close (v) Get+ GetSql+ (v) GetDataTypeName GetFeildType GetName GetOrdinal GetSchemaTable GetSqlValue GetValue IsDBNull (v) NextResult Read (v) 체크된 항목을 실습에 사용 www.themegallery.com Company Logo
SqlDataReader Class SqlDataReaderClass? < 사용 예 > SQL Server 데이터베이스에서 행의 앞으로만 이동 가능한 스트림을 읽을 수 있게 합니다. 이 클래스는 상속될 수 없습니다. SqlDataReader를 만들려면, 생성자를 직접 사용하지 않고 SqlCommand 개체의 ExecuteReader 메서드를 호출해야 합니다. SqlDataReader가 사용 중이면, 관련 SqlConnection이 SqlDataReader를 사용하고 있으며, 이를 닫지 않으면 SqlConnection에서 다른 작업을 수행할 수 없습니다. 이런 상태는 SqlDataReader의 Close 메서드가 호출될 때까지 적용됩니다. 예를 들어 Close를 호출할 때까지 출력 매개 변수를 검색할 수 없습니다. < 사용 예 > < MyCon.Connection.Open() 이후 > www.themegallery.com Company Logo
SqlDataReader Class How to use. <table1> SqlDataReader를 사용하는 동안 관련 SqlConnection은 Sql작업만 진행한다. SqlReader를 사용한 작업이 완료되었을때에는 반드시 닫는 처리를 해준다. <table1> < 사용 예 > “Connection 생략” <결과> www.themegallery.com Company Logo
SqlDataReader Class Depth, FeildCount < 사용 예 > “Connection 생략” Depth : 행의 중첩수준(level), 가장 바깥쪽 테이블은 수준이 0이 된다. (SQL Server .NET Data Provider를 사용하는경우 중첩을 지원하지 않으므로 항상 0을 반환한다.) FieldCount : 열의 개수를 가져온다. 레코드셋이 유효하지 않을때 0을 반환한다.(Sql서버의 Instance에 대한 연결이 없는경우 NotSuttportedExeption 예외를 발생시킨다. < 사용 예 > “Connection 생략” public int Depth {get;} public int FieldCount {get;} <결과> www.themegallery.com Company Logo
SqlDataReader Class IsClosed < 사용 예 > “Connection 생략” IsClosed : SqlDataReader의 개체가 닫혀 있는가? 에 대한 리턴값으로 ture면 “닫힘” false면 “열림” 이 된다. 햇갈리지 말자 “개체가 닫혔는가? (IsClose)” “ㅇㅇ닫힘 (true)” or “ㄴㄴㄴ 안닫힘(false)” < 사용 예 > “Connection 생략” public int IsClosed {get;} <결과> www.themegallery.com Company Logo
SqlDataReader Class Item public object this[string] { get; } Item : 열 값을 기본 형식(Variant 형)으로 가져온다. Item속성은 처리 효율면에서는 열의 서수를 이용하는 속성의 경우보다 비 효율적이지만 시각적인 코드를 작성할 수 있게 한다. 처리효율이 중요하지 않고 유지 보수가 중요시 되는 솔루션을 개발하는 경우라면 Item 속성을 이용하는 것이 좋다. public object this[string] { get; } public object this[int] { get; } <결과> < 사용 예 > “Connection 생략” www.themegallery.com Company Logo
SqlDataReader Class RecordAffected public int RecordsAffected { get; } RecordAffected : 쿼리의 실행에 의해 변경되거나 추가되거나 삭제된 행의 개수를 보여준다. (단, Select문의 경우에는 검색된 행의 수를 의미 하지 않고 -1값을 반환하는 점이 다르다.) #주의 : 프로시저에서는 일괄처리를 하므로 누적된다. public int RecordsAffected { get; } < 사용 예 > “Connection 생략” <결과> www.themegallery.com Company Logo
SqlDataReader Class Close < 사용 예 > “Connection 생략” Close : Close메소드는 SqlDataReader 개체를 닫는 역할을 한다. SqlReader개체가 생성되었다면 적절한 시기에 Close 메소드를 사용하여 개체를 닫는 것이 DB리소스를 효율적으로 사용 할 수 있다. < 사용 예 > “Connection 생략” public void Close(); <결과> www.themegallery.com Company Logo
SqlDataReader Class Get+ 데이터형 메소드 public decimal Get”DataType”(int i); Item속성보다 효율이 높다. 해당하는 열과 데이터형을 알고 있어야한다. public decimal Get”DataType”(int i); < 사용 예 > “Connection 생략” <결과> www.themegallery.com Company Logo
SqlDataReader Class Getsql+ 데이터형 메소드 Sql+데이터형이라는 표현을 볼 때 SQL 서버와 밀접한 관련이 있는 메소드 임을 알 수 있다. public decimal GetSql”DataType”(int i); < 사용 예 > “Connection 생략” <결과> www.themegallery.com Company Logo
SqlDataReader Class GetDataTypeName 소스 데이터형의 이름을 가져오는 역할을 한다. public string GetDataTypeName(int i); < 사용 예 > “Connection 생략” <결과> www.themegallery.com Company Logo
SqlDataReader Class GetFieldType < 사용 예 > “Connection 생략” 개체의 데이터형을 가져오는 메소드. name과 age의 경우 System.String에 해당한다. < 사용 예 > “Connection 생략” public Type GetFieldType(int i); <결과> www.themegallery.com Company Logo
SqlDataReader Class GetName < 사용 예 > “Connection 생략” 해당하는 개체의 열 이름을 가져오는 역할을 한다. (Column Name) < 사용 예 > “Connection 생략” public string GetName(int i); <결과> www.themegallery.com Company Logo
SqlDataReader Class GetOrdinal < 사용 예 > “Connection 생략” 해당하는 열의 서수를 가져온다. (Column Number) < 사용 예 > “Connection 생략” public int GetOrdinal(int i); <결과> www.themegallery.com Company Logo
SqlDataReader Class GetSchemaTable < 사용 예 > “Connection 생략” SqlDataReader의 열 메타 데이터를 설명하는 DataTable을 반환한다. 스키마는 테이블 등의 구조를 의미한다. SqlDataReader가 닫힌 경우에 GetSchemaTable을 호출하게되면 InvalidOperationException 예외가 발생하게 된다. < 사용 예 > “Connection 생략” public DataTable GetSchemaTabe(); <결과> www.themegallery.com Company Logo
SqlDataReader Class GetSqlValue < 사용 예 > “Connection 생략” 내부 SqlDbType중에서 Variant데이터형으로 포현된 오브젝트를 가져온다. GetSqlValue 메소드를 활용하면 My SQL 서버에서 현재 서수에 해당하는 열의 정확한 데이터형을 파악하지 않고도 값의 출력이 가능하다. 이 모든 열의 값을 임의의 형변수 값으로 변환하여 보여주기 때문이다. < 사용 예 > “Connection 생략” public object GetSqlValue(int i); <결과> www.themegallery.com Company Logo
SqlDataReader Class GetValue < 사용 예 > “Connection 생략” GetSqlValue와 비슷하다. Get+ 보다 속도면은 효율적이지 못하나 내부적으로 형변환이 일어나는 속도를 줄일수 있어서 GetSqlValue보다 효율적이다. < 사용 예 > “Connection 생략” public string GetValue(int i); <결과> www.themegallery.com Company Logo
SqlDataReader Class IsDBNull < 사용 예 > “Connection 생략” 해당하는 열에 Null값이 있으면 True 없으면 False를 반환한다. DB에서 Null은 0과 다르다. < 사용 예 > “Connection 생략” public bool IsDBNULL(int i); <결과> www.themegallery.com Company Logo
SqlDataReader Class NextResult public bool NextResult(); 일괄적으로 Transaction SQL 문의 결과를 읽을때 SqlDataReader를 다음 결과로 이동하는 처리를 수행한다. public bool NextResult(); < 사용 예 > “Connection 생략” <결과> www.themegallery.com Company Logo
SqlDataReader Class Read < 사용 예 > “Connection 생략” MoveNext역할을 포함하고 있다. 읽는 기능과 다음 레코드로 이동하는 역할을 한다. < 사용 예 > “Connection 생략” public bool Read(); <결과> www.themegallery.com Company Logo
따라해 보삼요..