ADO.NET의 SqlConnection 클래스는 SQL Server를 접속하기 위한 클래스이다. SQL 서버를 사용하기 위해서는 클라이언트 프로그램은 SqlConnection을 사용하여 먼저 서버와 접속을 해야한다. 서버와 접속을 위해서는 접속시 사용하는 Connection String이 필요한데, 이에는 서버명, 인증방법, 초기 DB명 등을 지정하면 된다.
예제
string strConn = "Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;";
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
// Do something here
conn.Close();
C# SqlConnection 사용
대부분의 리소스는 사용후 .NET이 자동으로 리소스를 해지(Clean up)하게 되는데, 이러한 종류의 리소스를 Managed Resource라 부른다. 하지만, 파일 핸들이나 데이타베이스 Connection과 같은 리소스는 .NET에서 자동으로 닫거나 해지하지 못하는데, 이를 Unmanaged Resource라 부른다. SqlConnection 클래스는 데이타베이스 Connection을 관리하며 이는 Unmanaged Resource에 해당 된다. 따라서 개발자가 이 객체를 사용한 후 반드시 Connection을 닫아 주는 코드를 넣어 주어야 한다. 아래의 예제는 finally 블럭에서 SqlConnection의 커넥션을 체크하고 이를 닫아주는 예이다.
예제
public void ConnectSample()
{
string strConn = "Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;";
SqlConnection conn = null;
try
{
conn = new SqlConnection(strConn);
conn.Open();
// Do something here
}
catch (Exception ex)
{
throw;
}
finally
{
if (conn != null)
{
conn.Close();
}
}
}
C# using 키워드
C#의 using 키워드는 해당 블럭이 끝나면 자동으로 (IDisposable 인터페이스의) Dispose() 메서드를 호출한다. Unamanaged Resource를 사용하는 모든 클래스는 (정상적으로 구현했다면) IDisposable 인터페이스를 구현하기 때문에, 이러한 Unmanaged Resource를 포함한 클래스들을 사용할 때는 using 문을 사용하여 자동으로 리소스를 해지하게 하면 편리하다. SqlConnection도 이러한 종류의 클래스에 해당하므로 위의 SqlConnection 예제는 다음과 같이 바꿔 쓸 수 있다. 한가지 주목할 만한 사실은 using블럭 내에서 에러가 발생하면 이는 catch되지 않는다는 것이다. 따라서 using은 try…finally 로 리소스 해지를 하는 역활을 한다고 보면 된다.