>  기사  >  백엔드 개발  >  데이터리더 C#

데이터리더 C#

WBOY
WBOY원래의
2024-09-03 15:22:29968검색

데이터 리더는 데이터 소스에서 데이터를 읽는 데 사용되는 개체입니다. 이는 데이터 소스에 대한 읽기 작업만 수행할 수 있고 업데이트 작업은 수행할 수 없습니다. 데이터는 데이터 소스에서 데이터 스트림으로 검색됩니다. 데이터 리더기는 읽기 동작만 가능하도록 제한되어 있지만 읽기 전용, 전달 전용이므로 효율성과 최적화가 매우 뛰어납니다. .Net Framework에는 SQLDataReader와 OleDbDataReader라는 두 가지 유형의 공급자가 있습니다. 데이터 리더는 특정 시점에 메모리에 유일한 행을 저장하므로 시스템 오버헤드를 줄여 애플리케이션 성능을 향상시킵니다. 이 문서에서는 적절한 예제와 함께 C#의 데이터 리더에 대해 자세히 설명합니다.

구문:

SQL 데이터 판독기는 System.Data.SqlClient 네임스페이스에서 사용할 수 있으며 해당 어셈블리는 System.Data.SqlClient.dll입니다. SQL 데이터 리더는 다음과 같이 초기화됩니다.

SqlDataReadersqlReader = sqlCmd.ExecuteReader();

실행 리더는 SQL 문이나 프로시저를 sqlconnection 개체에 전달하는 데 사용되며 해당 결과는 SqlDataReader의 sqlreader 개체에 저장됩니다. 데이터 판독기에서 읽기 전에는 항상 열려 있어야 하며 첫 번째 레코드를 가리켜야 합니다. 데이터 리더기의 read() 메소드를 이용하여 읽고 다음 행으로 넘어갑니다.

oledb 데이터 리더도 동일한 방식으로 작동합니다. 이름 공간 System.Data.OleDb에서 사용할 수 있으며 해당 어셈블리는 System.Data.OleDb.dll입니다. oledbDataReader 개체는 OLEDB 데이터 소스에 연결하고 여기에서 데이터를 가져오는 데 사용됩니다. SQLDataReader와 마찬가지로 oledbdata 리더도 읽기 작업을 수행하기 전에 열려 있어야 합니다. oledb 데이터 리더는 다음과 같이 초기화됩니다.

OleDbDataReaderoledbReader = oledbCmd.ExecuteReader();

Execurereader를 사용하여 SQL 문이나 프로시저를 수행하는 경우

데이터 리더 결과 액세스

데이터 판독기 개체에는 결과 집합의 행에 액세스하는 데 사용할 수 있는 읽기 메서드가 있습니다. 각 열 값은 해당 이름을 사용하거나 결과 집합에 나타나는 열 순서를 사용하여 액세스할 수 있습니다.  효율성을 높이기 위해 사전 정의된 유형 변환 방법 세트를 사용하여 값에 액세스합니다. 데이터가 캐시 메모리에 저장되지 않으므로 대용량 데이터 세트를 작업할 때 데이터 리더를 사용하는 것이 좋습니다. 데이터 판독기 개체를 사용한 후에는 항상 닫는 것이 좋습니다. 명령에 일부 반환 값이나 출력 매개변수가 있는 경우 데이터 판독기를 닫은 후에만 사용할 수 있습니다. 데이터 리더를 사용할 때 명심해야 할 또 다른 중요한 점은 데이터 리더가 연결을 사용할 때 해당 연결에서 다른 데이터 리더 또는 기타 작업을 수행할 수 없다는 것입니다. 또한 기억해야 할 중요한 점 중 하나는 데이터 세트에 대한 순방향 액세스만 가능하다는 것입니다. 이전 레코드가 아닌 다음 레코드에만 반복할 수 있습니다.

여러 세트로 작업하기

데이터 리더가 여러 결과 세트를 반환하는 경우 데이터 리더의 NextResult 메서드를 사용하여 해당 결과 세트에 액세스할 수 있습니다. 구현 중에는 모든 결과 세트가 반복되고 결과 세트 내의 각 열에 액세스할 수 있다는 점에 유의하고 주의를 기울여야 합니다.

DataReader C# 구현 예

다음은 DataReader C#의 예입니다.

예시 #1

일반적으로 데이터 판독기가 반환한 결과 집합에서 데이터를 읽는 것은 while 루프를 사용하여 각 행을 반복하는 것입니다. 읽기 메서드 반환 값은 bool 유형이며, 다음 행이 있으면 true가 반환되고 마지막 레코드에 대해서는 false가 반환됩니다. 조건이 거짓이 될 때까지 while 루프가 실행됩니다.

구문:

while(rdr.Read())
{
// operation to be performed
// Access columns
// Data manipulation
}

SQL 연결을 닫는 것과 마찬가지로 항상 데이터 리더를 닫는 것이 가장 좋습니다. 그동안 부분은 try 블록에 포함될 수 있으며 데이터 판독기 연결은 finally 블록에서 닫힐 수 있습니다.

구문:

try
{
// operation to be performed
// Access columns
// Data manipulation
}
Catch
{
//Handle exception here
}
finally
{
//close the data reader connection
if (reader != null)
{
reader.Close();
}
// close thesql connection
}

코드:

using System;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace test
{
public partial class test1 : Form
{
public test1()
{
InitializeComponent();
}
Public static void main()
{
string constr = null;
SqlConnectionscon ;
SqlCommandscmd ;
string sstat = null;
constr = "Data Source=testserver;Initial Catalog=testdb;User ID=test;Password=test";
sstat = "Select * from test";
scon = new SqlConnection(constr);
try
{
scon.Open();
scmd = new SqlCommand(sstat, scon);
SqlDataReadersstatReader = scmd.ExecuteReader();
while (sstatReader.Read())
{
Console.WriteLine("Name:" sstatReader.GetValue(0)  + "age:"  sstatReader.GetValue(1) );
}
sstatReader.Close();
scmd.Dispose();
scon.Close();
}
catch (Exception ex)
{
}
}
}
}

출력:

데이터리더 C#

예시 #2

코드:

using System;
using System.Windows.Forms;
using System.Data.OleDb;
namespace test
{
public partial class test : Form
{
public test()
{
InitializeComponent();
}
Public static void main()
{
string constr = null;
OleDbConnectionocon ;
OleDbCommandocmd ;
string sql = null;
constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb";
sql = "select * from emp";
ocon = new OleDbConnection(constr);
try
{
ocon.Open();
ocmd = new OleDbCommand(sql, ocon);
OleDbDataReaderordr = ocmd.ExecuteReader();
while (ordr.Read ())
{
Console.WriteLine("EmpName:" ordr.GetValue(0) + "Empage:"  ordr.GetValue(1) + "Esalary" ordr.GetValue(2) );
}
ordr.Close();
ocmd.Dispose();
ocon.Close();
}
catch (Exception ex)
{
Console.WriteLine("Connection Failed");
}
}
}
}

출력:

데이터리더 C#

결론

따라서 이 기사에서는 C#의 데이터 리더에 대해 자세히 다루었습니다. 또한 데이터 판독기가 데이터 스트림에서 전달 방식으로만 읽을 수 있는 방법도 보여주었습니다. 또한 이 기사에서는 두 가지 유형의 데이터 리더인 .esql 데이터 리더와 oledb 데이터 리더에 대해 자세히 설명했습니다. 적절한 예와 함께 두 데이터 판독기의 작동을 보여주었습니다. 또한 이 기사에서는 NextResult 메서드를 사용하여 여러 결과 집합으로 작업하는 방법과 for 루프를 사용하여 각 데이터 행을 반복하는 방법에 대해서도 다루었습니다. 좀 더 자세히 알아보려면 샘플 프로그램을 작성하고 실습해 보는 것이 좋습니다.

추천기사

DataReader C#에 대한 안내입니다. 여기서는 C#의 DataReader 소개와 코드 구현 및 출력과 함께 해당 예제를 논의합니다. 더 자세히 알아보려면 다른 추천 기사를 살펴보세요. –

  1. C# SortedDictionary
  2. C# 문자열 형식()
  3. C#의 TextWriter
  4. C#의 정적 생성자

위 내용은 데이터리더 C#의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.