티스토리 뷰

728x90

"무료 SQL Server Developer 설치하기"와 "SQL Server Developer 외부 연결과 DB/DB 사용자 생성하기"  글에 이어지는 포스팅입니다. 

DBMS 설치, DB 생성, DB 사용자 추가 및 권한 부여 등으로 DB 접속을 수행하는 프로그램 개발 준비가 되었다면 C# 언어를 통해서 해당 DB에 접속하여 테이블 생성, 데이터 추가 및 삭제, 검색 등을 수행하고자 한다. 닷넷 코어 8.0 이상의 SDK 환경과 텍스트 편집기를 도구로 사용한다.

 

파워쉘을 열고 위의 그림처럼 C# 콘솔 프로그램을 추가하고 해당 프로젝트에 Microsoft.Data.SqlClient 패키지를 추가한다.

 

dotnet new console -n SqlTest
cd SqlTest
dotnet add package Microsoft.Data.SqlClient

 

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=user1234!;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 = "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();
        }
    }
}

 

위의 코드를 생성한 프로젝트 폴더에 있는 Program.cs에 입력한다. connectionString에 네트워크를 통해서 사용자 아이디와 비밀번호로 접속하는 방법과 윈도우 인증을 통해서 접속하는 방법을 모두 제시했다. 주석처리된 것은 네트워크를 통해서 연결하는 방법이다.

 

코드는 1) 테이블이 존재하면 삭제 2) 테이블 생성 3) 데이터 삽입 4) 데이터 목록 조회 5) 데이터 삭제 6) 데이터 목록 재조회의 절차로 수행한다. 

 

 

Program.cs를 입력한 이후 프로젝트 폴더에서 dotnet build를 수행하고 dotnet run 하면 간편하게 SQL Server Developer 연결 및 쿼리 테스트를 통해서 해당 사용자에게 적절한 작업 권한이 있는지 확인할 수 있다.

 

재미있는 것은 Microsoft.Data.SqlClient 패키지가 크로스 플랫폼을 지원한다는 것이다. 본 포스팅의 예제 프로그램을 닷넷 8.0 SDK 환경에서 빌드하여 우분투에서 실행하면 위와 같이 네트워크로 데이터베이스에 접속하여 정상적으로 작업을 수행할 수 있었다.

 

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함