SQL Server - ① : MS-SQL 연결(연동) 하기
많은 DB 종류중에 Microsoft사의 DB 프로그램인 MS-SQL과 연결해서
프로시저를 사용해 테이블을 조회하고 관련 데이터를 추출하는 부분을 정리해볼 예정입니다.
아마 3~4개의 글로 나누어서 정리가 될거 같은데 첫번째 글은 SQL Server와 연결하는 부분입니다 .
✔ SQL Server = MS-SQL 입니다. 용어가 혼합되서 나올수도 있으나 혼동하지 마세요!!
Visual Studio에서 프로젝트를 생성하면 생기는 어플리케이션 구성 파일(App.config)을 사용해서
DB 연결 문자열을 가져오고, 이 문자열을 바탕으로 MS-SQL에 연결하는 과정까지 정리해보도록 하겠습니다.😄
앞으로 SQL Server와 관련된 모든 코드는 Nuget 패키지에서 "Microsoft.Data.SqlClient"를 사용해서 작성하도록 하겠습니다. (버전 : 5.0.0 / 게시일 : 2022.08.06)
(보통 우리가 상단에 using로 추가하는것은 어셈블리 단위가 아니라 네임스페이스 단위로 합니다.)
1. 어플리케이션 구성 파일(App.config)을 사용해서 연결 문자열 가져오기
① App.config 안에 DB 연결 문자열 입력
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- MsSql DB 연결 관련 -->
<connectionStrings>
<add name="MSSQL" connectionString="server=127.0.0.1,1433; user id=sa; pwd=1; database=Practice_Yhyou_DB;Encrypt=True;TrustServerCertificate=True;"/>
</connectionStrings>
</configuration>
App.config 안에 연결 문자열을 읽어올라면 반드시 <connectionStrings></connectionStrings> 안에다 입력해야합니다. 만약 임의로 사용자가 네이밍을 한다면 오류가 발생합니다.
✔ <DbConnectionStrings> </DbConnectionStrings> 라는 네이밍을 했을때 발생하는 오류
② System.Configuration.ConfigurationManager
클라이언트 애플리케이션의 구성파일에 액세스 할 수 있도록 해줍니다.
// 네임스페이스 등록
using System.Configuration;
// App.config의 연결 문자열을 읽어오는 부분
ConnectionString = ConfigurationManager.ConnectionStrings["MSSQL"].ConnectionString;
App.config안에 "MSSQL"이라는 name을 가진 connectionString의 값이 추출된것을 알 수 있습니다.
db 관련 연결 문자열을 string 타입의 변수에 저장해두고 아래에서 db에 연결할때 유용하게 사용하도록 하겠습니다.👍
③ ConnectionStrings vs AppSettings 속성 비교
ConfigurationManager 클래스를 통해 App.config의 값을 추출하기 위한 속성은 2가지가 있습니다.
여기서 AppSettings는 App.config 안에 <appSettings> </appSettings>의 데이터를 추출할 수 있으며
ConnectionStrings은 <connectionStrings> </connectionStrings> 안의 데이터만 추출할 수 있습니다.
각각의 구성과 형태가 어떻게 생겼는지는 아래의 Sample을 통해 확인하겠습니다 :)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Setting1" value="May 5, 2014"/>
<add key="Setting2" value="May 6, 2014"/>
</appSettings>
<connectionStrings>
<add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=WingtipToys;Integrated Security=True;Pooling=False" />
</connectionStrings>
</configuration>
2. Microsoft.Data.SqlClient 패키지 사용해서 MS-SQL 연결하기
① SqlConnection.Open() 으로 SQL Server와 접속
위의 과정을 통해 App.config에 있는 db 연결 문자열을 불러와서 string 타입의 변수에 저장하였습니다.
이를 SqlConnection 클래스의 인자로 사용하여 생성자를 만들고, DB와 연결하였습니다.
ConnectionString = ConfigurationManager.ConnectionStrings["MSSQL"].ConnectionString;
conn = new SqlConnection(ConnectionString);
conn.Open();
② SqlConnection.State를 통해 SQL Server와 접속 되었는지 확인
정상적으로 DB와 연결되었다면 State의 값이 Open이 들어오는것을 확인 할 수 있습니다.
이점을 이용해서 if문을 통해 DB와 연결되었는지 확인하고 연결이 안되었다면 return을 통해 다시 연결과정을 반복하도록 하였습니다.
코드 전문
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Data.SqlClient;
using System.Configuration;
namespace DbTableCreate
{
public partial class Form1 : Form, IDisposable
{
private SqlConnection conn;
private string ConnectionString;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// DB 연결자 리딩 및 연결
ConnectionString = ConfigurationManager.ConnectionStrings["MSSQL"].ConnectionString;
conn = new SqlConnection(ConnectionString);
try
{
conn.Open();
if (conn.State == ConnectionState.Closed) return;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
댓글