티스토리 뷰
"무료 DB SQL Server Express 설치 및 사용" 글에 이어지는 포스팅입니다.
소규모 시스템에 적용하기 좋은 DBMS인 SQL Server Express를 설치하고 네트워크 설정과 DB 생성, DB 사용자 추가 등으로 개발 준비를 마쳤으면 본격적인 개발에 앞서 주요 DB 기능 들이 정상적으로 동작하는지 간단한 프로그램을 통해서 테스트를 수행하고자 한다. 닷넷 8.0 이상의 SDK와 VS Code 환경에서 진행한다.

위의 그림처럼 콘솔 창에서 작업 폴더로 이동하여 "dotnet new console -n SqlTest2" 명령으로 SqlTest2라는 이름 C# 콘솔 프로젝트를 생성한다.

VS Code로 해당 폴더를 열면 위의 그림처럼 콘솔 프로젝트 템플릿으로 만들어진 파일들을 확인할 수 있는데 Program.cs에 필요한 코드를 추가하면 된다.

Terminal 메뉴에서 New Terminal을 선택하여 위의 그림처럼 "dotnet add package Microsoft.Data.SqlClient" 명령으로 프로젝트에 패키지를 추가한다. SQL Server DBMS에 접근할 수 있도록 기능을 제공한다. 크로스 플랫폼을 지원하여 리눅스에서도 네트워크로 Express에 연결할 수 있다.
using System;
using Microsoft.Data.SqlClient;
namespace SqlTest
{
class Program
{
static void Main(string[] args)
{
//string connectionString = "Server=192.168.0.48;Database=prjadb;User Id=prjauser;Password=1234user!;TrustServerCertificate=True;Encrypt=True;";
string connectionString = "Server=localhost;Database=prjadb;Integrated Security=SSPI;TrustServerCertificate=True;";
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("\nDB Connect OK!");
string sql = "SELECT @@VERSION";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
string version = (string)cmd.ExecuteScalar();
Console.WriteLine("\nVersion info : " + version);
}
sql = $"SELECT CASE WHEN OBJECT_ID(N'Members', N'U') IS NOT NULL THEN 1 ELSE 0 END";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
int isExist = (int)cmd.ExecuteScalar();
Console.WriteLine("\nMembers is " + ((isExist == 1) ? "Exist" : "Not Exist"));
}
sql = "DROP TABLE IF EXISTS dbo.Members;";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.ExecuteNonQuery();
Console.WriteLine("\nTable droped!");
}
sql = @"CREATE TABLE Members ( ID NVARCHAR(32) NOT NULL PRIMARY KEY, FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL)";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.ExecuteNonQuery();
Console.WriteLine("\nTable created!");
}
sql = @"INSERT INTO Members ( ID, FirstName, LastName) VALUES ('USER1', 'Gildong', 'Hong');
INSERT INTO Members ( ID, FirstName, LastName) VALUES ('USER2', 'Gilsun', 'Hong');
INSERT INTO Members ( ID, FirstName, LastName) VALUES ('USER3', 'Gaja', 'Hong');
INSERT INTO Members ( ID, FirstName, LastName) VALUES ('USER4', 'Gaedong', 'Kim');
INSERT INTO Members ( ID, FirstName, LastName) VALUES ('USER5', 'Aji', 'Park');";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.ExecuteNonQuery();
Console.WriteLine("\nData inserted!");
}
string query = @"SELECT * FROM Members";
SqlCommand command = new SqlCommand(query, connection);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader["ID"]}, {reader["FirstName"]}, {reader["LastName"]}");
}
}
Console.WriteLine("\nQuery finished!");
sql = @"DELETE FROM Members WHERE ID = 'USER3';";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.ExecuteNonQuery();
Console.WriteLine("\nData deleted!");
}
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader["ID"]}, {reader["FirstName"]}, {reader["LastName"]}");
}
}
Console.WriteLine("\nQuery finished!");
}
}
catch (Exception ex)
{
Console.WriteLine("\n DB Err " + ex.Message);
}
Console.WriteLine("\nTest finished. Press any key to exit...");
Console.ReadKey();
}
}
}
프로그램은 다음과 같은 순서로 작업을 진행한다.
- DB 연결
예제 코드에서는 윈도우 인증을 사용했고, 주석을 풀면 네트워크로 아이디/비밀번호 인증 접속이 가능하다. - DB 버전 및 에디션 조회
엔진 버전, Express 에디션과 OS 버전 등을 확인할 수 있다. - 테이블 존재 여부 확인
- 테이블의 존재하면 삭제
- 테이블 생성(CREATE TABLE)
- 데이터 삽입(INSERT INTO)
- 데이터 목록 조회(SELECT FROM)
- 데이터 삭제(DELETE FROM)
- 데이터 목록 조회(SELECT FROM)

VS Code의 터미널 창에서 dotnet build, dotnet run을 수행한 결과는 위의 그림과 같다. 물론 주석을 풀어서 네트워크 모드로 수행해도 동일한 결과를 얻을 수 있다.

위의 그림은 앞서 빌드한 프로그램을 우분투 리눅스에 복사하여 실행한 결과이다. SQL Server Express를 네트워크를 통해 아이디, 비밀번호 인증으로 접속하여 정상적으로 DB 기능들을 수행한 것을 확인할 수 있고 Microsoft.Data.SqlClient의 크로스 플랫폼 지원도 정상적으로 동작함을 확인할 수 있었다.
'프로그래밍' 카테고리의 다른 글
| SQLite3와 SQL Server의 SQL 차이 메모 (0) | 2026.05.29 |
|---|---|
| C#으로 SQL Server Developer 연결 및 쿼리 테스트하기(우분투 연결 포함) (0) | 2026.05.21 |
| 닷넷에서 프로젝트 파일없이 단일 C# 코드를 빌드하고 실행하기 (0) | 2026.04.17 |
| 닷넷 코어에서 EUC-KR 인코딩 적용하기 (0) | 2026.04.15 |
| 아발로니아 릴리즈 모드 디버깅 (0) | 2026.03.31 |