ADO 사용방법이 정확히 올라와 있는것이 없군요.
이참에 아예 ADO 에 대해서 간단히 설명 드리겠습니다.
ADO 는 ActiveX Data Object 의 약자로 무슨 뜻인진 모릅니다. ㅡ,.ㅡ;;
그냥 요즘은 ADO 이 방식을 사용하는데요.
사용 방법을 알려드리겠습니다.
ADO 를 사용하려면 ADO 를 설치해야 합니다.
MDAC 이라는것인데요. Microsoft Data Access Component 라는 것입니다.
마이크로 소프트에서 나온 데이터를 억세스 하는 컴포넌트죠. ( 이게 바로 직역이라는~ 하하하)
버전이 2.0 부터 현재 2.8 까지 나온것으로 알고 있습니다.
보통 엠닥이라고 부르는데 현재 Windows XP 를 설치하면 2.8 이 포함되어서 나옵니다.
그러니 XP를 사용하시면 별 신경 안쓰셔도 된다는....
VB를 실행하셔서 메뉴에서 프로젝트 -> 참조를 들어가 보세요.
M 으로 시작하는데 가시면 위 그림과 같이 Microsoft ActiveX Data Objects 가 버전별로 쭈욱 나와있습니다.
사용하기 위해서 최근 버전인 2.8 을 선택하시면 됩니다.
(만약 XP 이하 버전이거나 위 항목이 없다면 대용량 자료실에서 MDAC 2.8 을 받아서 설치하시면됩니다.)
그 다음 확인을 누르세요.
자 이제 코딩을 시작하면 됩니다.
먼저 가장 간단하게 이용할 수 있는 모듈을 이용하는 방법을 가르쳐 드리겠습니다.
프로그램을 시작한 후 DB를 이용할때 마다 매번 연결했다 끊었다 하는것은 시간낭비 자원 낭비 입니다.
그러니 프로그램 시작할때 한번만 연결하고 프로그램이 종료될때 한번만 끊으면 좋겠죠.
그렇게 하기 위해서 모듈을 일단 한개 새로 만드신다음 이름을 modDatabase 라고 지어줍니다.
(구분하기 위해서요. 꼭 안하셔도 됩니다.)
이전에 MDAC을 참조 했으니 선언을 합니다.
Public Con As ADODB.Connection
Public Rs As ADODB.Recordset
모듈 맨 윗부분에 써 주세요.
Public Con As ADODB.Connection
이 부분은 프로그램이 실행되는 동안 DB와 연결해 놓을 변수 입니다. DB를 프로그램이 끝날때 까지 꽉 잡고 있을 놈이죠.
(일명 커넥션이라고 부릅니다. 뒤에가 Connection으로 선언이 되어있죠.)
Public Rs As ADODB.Recordset
이 놈은 프로그램이 실행되는 동안 Con 을 통하여 데이터를 날라다줄 놈입니다.
(일명 레코드셋이라고 부릅니다. 이놈도 뒤가 Recordset으로 선언이 되있죠.)
자 그럼 연결을 해줍시다.
[MDB 연결 방법 : MDB 파일이 EXE 파일과 같이 있을경우]
Public Function MDB_Conn() As Boolean
Dim conStr As String
Dim DBPath As String
Dim DBFile As String
MDB_Conn = False
On Error GoTo ConnectError
Set Con = New ADODB.Connection
DBPath = IIf(Right(App.Path, 1) = "\", App.Path, App.Path + "\") 'EXE 파일이 위치한 경로 만약 MDB경로가 틀리다면 이 부분을 수정하세요.
DBFile = "TEST.MDB" 'MDB 파일이름입니다.
conStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
conStr = conStr + "Data Source=" + DBPath + DBFile + ";"
conStr = conStr + "User ID=admin"
conStr = conStr + ";Jet OLEDB:Database Password=1112;" '이 줄은 MDB에 패스워드가 있을경우 적어줍니다.
Con.Open conStr
On Error GoTo 0
MDB_Conn = True '연결이 성공하면 True 반환
Exit Function
ConnectError:
MDB_Conn = False '실패하면 False 반환
End Function
Public Function Run(nSql As String) As Boolean
Dim MsgMake As String
Dim i As Integer
On Error GoTo ErrSql
Set Rs = Con.Execute(nSql)
On Error GoTo 0
Run = True '실행이 성공하면 True 반환
Exit Function
ErrSql:
Run = False '실행이 실패하면 False 반환
End Function
[MSSQL]
Public Function MSSQL_Conn() As Boolean
Dim IP as string
Dim DBName as string
Dim uUser as string
Dim uPWD as string
On Error GoTo DB_Handle
IP = "192.168.0.1" 'DB 서버의 IP를 적어줍니다.
DBName = "Test" '사용할 DB 이름을 적어줍니다.
uUser = "sa" '사용할 User 이름을 적어줍니다. 기본은 sa 입니다.
uPWD = "myPassword" '위 User의 암호를 적어줍니다.
Set Con= New ADODB.Connection
Con.Open "PROVIDER=SQLOLEDB; SERVER="+IP+"; DATABASE="+DBName+"; UID="+uUser+"; PWD="+uPWD+";"
MSSQL_Conn = True
Exit Function
DB_Handle:
MSSQL_Conn = False
End Function
Public Function Run(nSql As String) As Boolean
Dim MsgMake As String
Dim i As Integer
On Error GoTo ErrSql
Set Rs = Con.Execute(nSql)
On Error GoTo 0
Run = True '실행이 성공하면 True 반환
Exit Function
ErrSql:
Run = False '실행이 실패하면 False 반환
End Function
자 여기까지 됬으면 이제 사용만 하면 됩니다.
폼으로 가봅시다.
DB를 이용하는 폼이 있는데 모듈이 없이 Form_Load()로 시작하거나 모듈에 Sub Main() 있다면
- 모듈에서 시작할 경우
Sub Main()
if Not MSSQL_Conn Then
Msgbox "DB에 연결하지 못하였습니다."+vbcrlf+"다음에 다시 시도하세요.",vbCritical+vbOkOnly,"DB연결 오류"
End
End if
frmMain.Show
End Sub
- Form 에서 바로 시작할 경우
Private Sub Form_Load()
if Not MSSQL_Conn Then
Msgbox "DB에 연결하지 못하였습니다."+vbcrlf+"다음에 다시 시도하세요.",vbCritical+vbOkOnly,"DB연결 오류"
End
End if
End Sub
이런식으로 하면 프로그램이 시작되면서 DB연결을 할것이고 연결에 실패하면 프로그램을 종료시켜버릴것입니다.
무사히 폼이 떴다면 이제 RecordSet 을 통하여 자료만 주고 받으면 됩니다.
버튼을 누른다거나 어떤 이벤트에서든지
SQL = "Select * From TestTable"
If Run(SQL) Then
If not (rs.eof or rs.bof) then
'SQL문이 실행이 잘 되었고 레코드도 반환되어서 처음부터 끝까지 루프를 돕니다.
Rs.movefirst
do while not rs.eof
'레코드를 한개씩 그리드나 리스트에 추가하세요.
rs.movenext
loop
else
'SQL문이 실행은 잘 됬으나 해당되는 레코드가 한건도 없습니다.
end if
Else
'SQL문이 잘못되서 실행되지 않았습니다.
End if
이런식으로 하시면 모든 레코드를 컨트롤 하실수 있습니다.
SQL 에 Insert , Update, Delete 문장도 넣으시고
A = Run(SQL) 하시면 바로 실행하실수 있습니다.
결과는 A 에 True 또는 False 로 반환받으실수 있구요.
대충 개념이 잡히실라나 모르겠습니다.
좋은 하루 되세요.
첫댓글 access 방법과 mssql 방법이 같이 되어 있네요~ ㅎㅎ 한참 헷갈렸삼.. ㅋㅋ 여튼 대단히 감솨~ㅎㅎ