SQL에서 서버 접속 여부 확인 하기 feat. DB.State

요약

  • 현재 SQL 서버, 혹은 액세스에 접속해 있는지 확인 하려면
  • State 속성의 값을 확인 하면 됩니다.
  • 1 = 접속중, 0 = 접속 중 아님

문제의 원인

이래저래 SQL 이나 액세스로 만든 데이터베이스에 접속 하면서 여러 자료들을 뿌려 주고 하는데, 물론 이전 작업을 할 때 DB 접속 하고 잘 끊어 주면 괜찮겠지만, 사람이 코드 짜다 보면 실수도 할 수 있고 그런거 아닙니까?

아무튼 DB에 연결된 상태에서 가끔 또 연결하고 그러면서 오류 메시지 뿜어 내면서 프로그램 종료되고.. 뭐 그런 일들이 종종 발생 하더라구요.

그래서 찾아 보니 역시나 방법은 있었습니다.

DB.State 확인하기

액세스에 접속하는 것을 기준으로 하면 아래와 같은 코드를 사용 할 수 있습니다.

Public Const Path = "액세스 파일 주소"
Public Const Connect = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Path & ";"
Public DB As New ADODB.Connection

Public Sub OpenDB()

    DB.Open Connect

End Sub

DB 라는 커넥션을 전역변수로 설정 해놓고 OpenDB 라는 프로시져를 실행시키면 DB 에 접속 되도록 해두었습니다.

그런데 이미 OpenDB 를 이용해 DB 에 접속 되어 있는 상황에서 OpenDB 를 다시 실행하여 DB 에 또다시 접속 하려 하면 오류가 뜹니다. 그래서 코드를 아래와 같이 바꿔 줍니다.

    If DB.State = 0 Then
        DB.Open Connect
    End If

먼저 DB 접속 상태를 확인하여, 접속 되지 않은 상황이라면(DB.State = 0) 접속을 시도 하고, 이미 접속 되어 있는 상태라면 아무것도 실행하지 않는 것이죠.

DB 연결 종료 하기

마찬가지의 경우로 DB 연결을 종료 하는 곳에도 적용 할 수 있습니다.

    If DB.State = 1 Then
        DB.Close
    End If

DB 에 연결 되어 있는 경우에만(DB.State = 1) DB 접속을 종료 하는 것입니다.

참고 자료