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 접속을 종료 하는 것입니다.
댓글 남기기