1. Oracle Client를 설치하고, 연결할 Oracle을 에 대한 설정을 한다.
2. DB connect Function(여기서 XXX 부분에 Oracle Client에서 설정한 값을 입력한다.)
- DB 연결이 필요한 부분에 아래 function을 호출한다.
Private Sub ConnectDB()
Set adoOraCon = New ADODB.Connection
With adoOraCon
.ConnectionString = "Provider=MSDAORA.1;Data Source=XXX;User ID=XXX;Password=XXX;Persist Security Info=True"
.ConnectionTimeout = 60
.Open
End With
End Sub
3. 모듈에 다음 function을 입력한다.
Option Explicit
Public adoOraCon As ADODB.Connection
' Procedure : GetRecordSet
' Description : 인자로 넘어오는 쿼리를 실행하고, 결과값을 RecordSet으로 반환
' Parameter : szSql(쿼리)
'Return Value : Recordset
Public Function GetRecordSet(ByVal szSql As String) As ADODB.Recordset
Dim adoRs As ADODB.Recordset
Set adoRs = New ADODB.Recordset
adoRs.Open szSql, adoOraCon, adOpenKeyset, adLockBatchOptimistic
'Recordset 반환
Set GetRecordSet = adoRs
Set adoRs = Nothing
End Function
' Procedure : ExecuteQuery
' Description : 인자로 넘어오는 쿼리를 실행하고 성공여부를 반환
' Parameter : szSql(쿼리)
'Return Value : True/False
Public Function ExecuteQuery(szSql As String) As Boolean
On Error GoTo ErrHandler
adoOraCon.Execute szSql
ExecuteQuery = True
Exit Function
ErrHandler:
If Err.Number <> 0 Then
MsgBox Err.Source & vbCrLf & Err.Description, vbExclamation, "쿼리 수행 오류"
ExecuteQuery = False
Err.Clear
End If
End Function
4. 원하는 쿼리를 만들어 모듈의 function을 실행한다.
- 일반적으로 값을 가지고 오는 Select Query이면, GetRecordSet를 실행하고,
- insert, delete와 같은 데이터 조작 쿼리인 경우에는 ExecuteQuery를 실행한다.
예) SELECT Query
Dim strSQL As String
Dim adoRs As ADODB.Recordset
'//IMPORTANT : 조회 쿼리 생성
strSQL = "SELECT * FROM TEST_TAB ORDER BY A_COL"
Set adoRs = GetRecordSet(strSQL)
While Not adoRs.EOF
'//IMPORTANT : 가지고 온 결과를 처리하는 부분
adoRs.MoveNext
Wend
adoRs.Close
Set adoRs = Nothing
예) Execute Query
Dim strSQL As String
strSQL = "INSERT INTO TEST_TAB(a_col, b_col, c_col, d_col) VALUES ('" & strName & "', '" & strKorean & "', '" & strMath & "', '" & strEnglish & "')"
If ExecuteQuery(strSQL) = False Then
Msgbox "실패"
Else
Msgbox "성공"
End If
2. DB connect Function(여기서 XXX 부분에 Oracle Client에서 설정한 값을 입력한다.)
- DB 연결이 필요한 부분에 아래 function을 호출한다.
Private Sub ConnectDB()
Set adoOraCon = New ADODB.Connection
With adoOraCon
.ConnectionString = "Provider=MSDAORA.1;Data Source=XXX;User ID=XXX;Password=XXX;Persist Security Info=True"
.ConnectionTimeout = 60
.Open
End With
End Sub
3. 모듈에 다음 function을 입력한다.
Option Explicit
Public adoOraCon As ADODB.Connection
' Procedure : GetRecordSet
' Description : 인자로 넘어오는 쿼리를 실행하고, 결과값을 RecordSet으로 반환
' Parameter : szSql(쿼리)
'Return Value : Recordset
Public Function GetRecordSet(ByVal szSql As String) As ADODB.Recordset
Dim adoRs As ADODB.Recordset
Set adoRs = New ADODB.Recordset
adoRs.Open szSql, adoOraCon, adOpenKeyset, adLockBatchOptimistic
'Recordset 반환
Set GetRecordSet = adoRs
Set adoRs = Nothing
End Function
' Procedure : ExecuteQuery
' Description : 인자로 넘어오는 쿼리를 실행하고 성공여부를 반환
' Parameter : szSql(쿼리)
'Return Value : True/False
Public Function ExecuteQuery(szSql As String) As Boolean
On Error GoTo ErrHandler
adoOraCon.Execute szSql
ExecuteQuery = True
Exit Function
ErrHandler:
If Err.Number <> 0 Then
MsgBox Err.Source & vbCrLf & Err.Description, vbExclamation, "쿼리 수행 오류"
ExecuteQuery = False
Err.Clear
End If
End Function
4. 원하는 쿼리를 만들어 모듈의 function을 실행한다.
- 일반적으로 값을 가지고 오는 Select Query이면, GetRecordSet를 실행하고,
- insert, delete와 같은 데이터 조작 쿼리인 경우에는 ExecuteQuery를 실행한다.
예) SELECT Query
Dim strSQL As String
Dim adoRs As ADODB.Recordset
'//IMPORTANT : 조회 쿼리 생성
strSQL = "SELECT * FROM TEST_TAB ORDER BY A_COL"
Set adoRs = GetRecordSet(strSQL)
While Not adoRs.EOF
'//IMPORTANT : 가지고 온 결과를 처리하는 부분
adoRs.MoveNext
Wend
adoRs.Close
Set adoRs = Nothing
예) Execute Query
Dim strSQL As String
strSQL = "INSERT INTO TEST_TAB(a_col, b_col, c_col, d_col) VALUES ('" & strName & "', '" & strKorean & "', '" & strMath & "', '" & strEnglish & "')"
If ExecuteQuery(strSQL) = False Then
Msgbox "실패"
Else
Msgbox "성공"
End If