C#에서 데이터베이스 쿼리 선택

Muhammad Husnain 2023년10월12일
  1. 데이터베이스란 무엇인가
  2. C#의 데이터베이스 연결
C#에서 데이터베이스 쿼리 선택

이 기사에서는 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#의 데이터베이스와 연결

데이터베이스와 상호 작용하려면 몇 가지 매개 변수가 필요합니다. 이러한 매개변수는 결합되어 연결 문자열을 형성합니다.

  1. 데이터베이스 이름 - 데이터를 읽어야 하는 데이터베이스의 이름을 제공해야 합니다. 한 번에 하나의 데이터베이스만 사용하는 것이 좋습니다.
  2. 데이터베이스 자격 증명 - 데이터베이스와 상호 작용하기 위한 사용자 이름과 암호가 항상 있으므로 승인된 사용자 이름과 암호를 제공해야 합니다.
  3. 일부 선택적 매개변수 - 일부 선택적 매개변수를 제공할 수도 있습니다. 예를 들어, 데이터베이스가 일정 기간 동안 비활성화 상태를 유지하는 경우 연결을 닫아야 하는 타임아웃 값을 설정할 수 있습니다.

데이터베이스와의 연결을 수행할 예제 코드를 살펴보겠습니다. 데이터베이스 사용자 이름이 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이 생성됩니다. 이 ResultsetSqlDataReader 클래스를 사용하여 읽을 수 있습니다.

아래 코드를 살펴보자.

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와 같은 단일 값을 반환하는 쿼리용 함수
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

관련 문장 - Csharp SQL