HOWTO · Csharp
C#에서 데이터베이스 쿼리 선택
C#에서 SELECT 쿼리를 사용하여 데이터베이스 연결을 설정하고 레코드를 검색하는 방법에 대한 완전한 프로그래밍 자습서입니다.
이 기사에서는 C# 애플리케이션과 데이터베이스 연결을 설정하고 데이터베이스에서 SELECT 쿼리를 사용하여 다른 테이블에서 데이터를 가져오는 방법을 안내합니다.
데이터베이스란 무엇인가
데이터베이스는 단순히 표 형식으로 구성된 데이터 모음이 아니라 그 이상입니다. 적절한 명명 규칙 및 다른 테이블과의 관계를 사용하여 조직화된 구조의 데이터를 나타냅니다.
데이터베이스 관리 시스템은 또한 데이터베이스와 상호작용하기 위한 언어(예: SQL)를 제공하는데, 이는 영어와 매우 유사하여 사용자가 매우 쉽게 이해할 수 있습니다. 또한 데이터 보안 및 최적화 계획을 제공하여 데이터 작업의 성능을 향상시킵니다.
C#의 데이터베이스 연결
일반적으로 프로그래머는 데이터베이스를 사용하여 응용 프로그램의 데이터를 저장합니다. C# 언어는 Oracle 데이터베이스 및 Microsoft SQL 서버 데이터베이스로 데이터베이스 프로그래밍을 제공합니다.
C#은 다른 많은 데이터베이스와도 작동할 수 있지만 위의 두 데이터베이스가 가장 일반적이고 널리 사용됩니다. 데이터베이스가 무엇이든 모든 데이터베이스의 논리는 매우 동일합니다.
이 문서에서는 SQL Server 데이터베이스를 사용하여 작업을 수행합니다. 데이터베이스 작업에 필요한 네임스페이스는 System.data.SqlClient입니다.
여기에는 데이터베이스 연결 및 작업 중에 필요한 모든 클래스가 포함됩니다.
SQL Server에서 데이터베이스 생성
첫 번째 단계는 SQL Server 내에서 상호 작용해야 하는 데이터베이스를 만드는 것입니다. 이 데이터베이스는 다음 쿼리를 사용하여 생성됩니다.
create database mydb;
use mydb;
CREATE TABLE Student(
studentID varchar(20) NOT NULL PRIMARY KEY,
stuentName varchar(60) NOT NULL
);
insert into Student values("BS01", 'David');
insert into Student values("BS02", 'John');
이러한 쿼리를 실행한 후 Student 테이블이 있는 데이터베이스가 생성되고 여기에는 2개의 행이 있습니다.
C#의 데이터베이스와 연결
데이터베이스와 상호 작용하려면 몇 가지 매개 변수가 필요합니다. 이러한 매개변수는 결합되어 연결 문자열을 형성합니다.
- 데이터베이스 이름 - 데이터를 읽어야 하는 데이터베이스의 이름을 제공해야 합니다. 한 번에 하나의 데이터베이스만 사용하는 것이 좋습니다.
- 데이터베이스 자격 증명 - 데이터베이스와 상호 작용하기 위한 사용자 이름과 암호가 항상 있으므로 승인된 사용자 이름과 암호를 제공해야 합니다.
- 일부 선택적 매개변수 - 일부 선택적 매개변수를 제공할 수도 있습니다. 예를 들어, 데이터베이스가 일정 기간 동안 비활성화 상태를 유지하는 경우 연결을 닫아야 하는 타임아웃 값을 설정할 수 있습니다.
데이터베이스와의 연결을 수행할 예제 코드를 살펴보겠습니다. 데이터베이스 사용자 이름이 usr이고 암호가 usr123이라고 가정합니다.
SqlConnection conn;
string connectString =
@"Data Source=DESKTOP-FQ8R559;Initial Catalog=mydb;User ID=usr;Password=usr123";
conn = new SqlConnection(connectString);
conn.Open();
Console.WriteLine("Connection Established");
데이터베이스에서 데이터 읽기
데이터베이스에서 데이터를 읽으려면 SqlCommand 클래스와 SqlDataReader가 필요합니다. SqlCommand 클래스는 데이터베이스에서 명령을 실행하는 데 사용됩니다.
Select 명령을 실행하면 Resultset이 생성됩니다. 이 Resultset은 SqlDataReader 클래스를 사용하여 읽을 수 있습니다.
아래 코드를 살펴보자.
SqlCommand cmd;
SqlDataReader dataReader;
string sql = "Select * from Student";
cmd = new SqlCommand(sql, conn);
dataReader = cmd.ExecuteReader();
Console.WriteLine("Data from the Database..");
while (dataReader.Read()) {
Console.WriteLine(dataReader.GetValue(0) + " || " + dataReader.GetValue(1));
}
dataReader.close();
conn.close();
이 코드 조각에서 먼저 SqlCommand 개체를 만들고 데이터베이스에서 실행하는 데 필요한 쿼리를 만들었습니다. 그런 다음 이 쿼리는 cmd 개체와 연결 개체 conn으로 전송됩니다.
쿼리를 실행하려면 쿼리에서 얻은 데이터가 포함된 Resultset을 반환하는 ExecuteReader() 함수를 사용합니다. 이 ResultSet은 루프의 데이터를 행 단위로 읽는 SqlDataReader 개체를 사용하여 읽을 수 있습니다.
결국 우리는 판독기와 연결 개체를 닫아야 나중에 사용할 수 있도록 해제할 수 있습니다.
위 코드의 출력은 다음과 같습니다.
Connection Established.
Data from the Database..
BS01 || David
BS02 || John
Select 쿼리를 실행하기 위해 ExecuteReader() 함수를 사용했습니다. 더 많은 유형의 쿼리를 실행하려면 다른 방법이 필요합니다.
인기 있는 쿼리 결과 리더는 다음과 같습니다.
| 기능 이름 | 설명 |
|---|---|
ExecuteReader() |
데이터를 테이블 형식으로 반환할 수 있는 쿼리를 실행하는 데 사용되는 함수입니다. |
ExecuteNonQuery() |
insert, update 등과 같은 데이터베이스에서 DML 쿼리를 실행하는 기능 |
ExeuteScalar() |
count와 같은 단일 값을 반환하는 쿼리용 함수 |