강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

웹프로그래밍 언어별 데이터베이스연결 (ASP편)
작성자 : 13 김영철
등록날짜 : 2009.01.23 00:25
3,770
우선 ASP와 MS-SQL, ORACLE, MySQL 간의 연결에 대해서 알아보겠습니다.

기반이 되는 기본적인 환경은 다음과 같습니다.
--------------------------------------------------
운영체제 : WINDOWS 2000 SERVER
웹서버 : IIS 5.0
웹프로그래밍언어 : ASP
--------------------------------------------------
이번 강좌에서 사용할 데이터베이스는 다음과 같습니다.

데이터베이스 : MS-SQL 2000, ORACLE 9i, MySQL 4.0.18

강좌를 시작하면서 운영체제에 따른(WINDOWS와 Linux환경) 방법들도 나누어서 강좌를 진행하느냐를 놓고 고민을 했었는데요
솔직한 예기로 Linux는 잘 모르기도하고 대부분의 개발을 WINDOWS 플랫폼상에서 해왔기 때문에 아는 범위내에서 강좌를 진행하는게 좋을거 같아서 운영체제는 WINDOWS, 그중에서도 WINDOWS 2000 SERVER 로 한정지어서 강좌를 쓰기로 결정했습니다.

즉 이번 강좌의 제목은 제대로 이름짓는다면
"WINDOWS 2000 SERVER 환경에서 ASP와 각 DB간의 연결방법"이 되겠네요.

ASP에서 DB로의 연결방법은 크게 두가지로 구분지을 수 있겠습니다.
그 하나는 ODBC를 통한 연결이고 다른 하나는 OLE DB를 통한 연결입니다.
ODBC와 OLEDB의 차이는 자료가 많으니 구지 설명하지는 않겠습니다.
결론만 예기하자면 ODBC보다는 OLEDB를 사용하는 편이 훨씬 낫습니다.
이러저러요러한 이유들 때문이죠.

제 강좌는 원론적인 내용보다는 실전적인 부분에 비중을 두려고 합니다.
사실 원론적인 내용은 이리저리 돌아다니면 많이 나오거든요.
실제로 이렇게 하면 짜잔~ 하고 화면이 뜬다라는 기쁨을 느꼈을때가 책보면서 음 이런거였군 저런거였군 했을때 보다 더 즐겁더라구요.

이번 강좌에서는 ODBC를 통한 연결에 관해선 설명하지 않고 OLEDB를 통한 연결만을 설명하도록 하겠습니다.


1. ASP 와 MS-SQL 2000의 OLE DB를 통한 연결.

제일 간단합니다.
ASP도 MS꺼고 MS-SQL도 MS꺼니까요.
WINDOWS 2000 깔때 IIS도 같이 깔죠? 이미 이 시점에서 ASP프로그래밍은 가능한 상태가 되어 있습니다.
이제 MS-SQL을 설치하고 ASP페이지에서 연결하기만 하면 끝이네요.
사실 이건 워낙 나와있는데가 많아서 설명안해도 될거 같지만 일단은 간단하게 적도록 하겠습니다.

우선 적당한 위치에 oledb.udl 이라는 이름으로 파일을 만듭니다.



마우스 우클릭으로 등록정보로 들어가셔서 공급자 탭을 선택하면 다음과 같이 화면이 나옵니다.

3-1-mogrim.gif

연결할 데이터로 Microsoft OLE DB Provider for SQL Server를 선택하시고 다음을 누르거나 연결탭을 선택하면 다음과 같은 화면이 나옵니다.

3-3-mogrim.gif

여기서
1) 서버이름은 셀렉트박스를 누르면 나오는 자신의 컴퓨터이름으로 선택
2) 로그온정보에 id/password입력
3) 데이터베이스선택 후 연결테스트를 누르면
"연결 테스트에 성공했습니다." 라는 화면이 나오게 됩니다.

테스트에 성공하면 확인버튼을 누르고 oledb.udl 파일을 텍스트에디터 등으로 엽니다.
그러면 다음과 같은 내용을 볼 수 있습니다.

[oledb.udl 파일내용]
--------------------------------------------------
[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=OCILIFELOCAL
--------------------------------------------------
위의 파일 내용을 참고하여
db_open.asp 파일을 만들도록 하겠습니다.

[db_open.asp 파일내용]
--------------------------------------------------
< %' MS-SQL OLEDB 커넥션 설정
Set db = Server.CreateObject("ADODB.Connection")
'OLE DB를 통한 SQL 서버의 접속문자열
str_connect = "Provider=SQLOLEDB.1;"
str_connect = str_connect & "Data Source = localhost;"
str_connect = str_connect & "Initial Catalog = master;"
str_connect = str_connect & "User ID = sa;"
str_connect = str_connect & "Password = 1111;"
str_connect = str_connect & "Persist Security Info=True;"
db.Open str_connect
%>
--------------------------------------------------

위의 세팅은 테스트용 로컬컴퓨터의 MS-SQL에 있는 master라는 데이터베이스에 sa/1111 이라는 계정으로 접속한 경우입니다.
각 항목에 대한 설명은 생략하고 다음과 같은 경우를 예를 들어 설명하겠습니다.
만약 웹호스팅을 받고 있는데 MS-SQL의 위치가 211.215.xx.xx 이고 데이터베이스명이 db040300 , 사용자계정이 user040300/psw1234 라면
다음과 같이 세팅하면 되겠습니다.

< %' MS-SQL OLEDB 커넥션 설정
Set db = Server.CreateObject("ADODB.Connection")
'OLE DB를 통한 SQL 서버의 접속문자열
str_connect = "Provider=SQLOLEDB.1;"
str_connect = str_connect & "Data Source = 211.215.xx.xx;"
str_connect = str_connect & "Initial Catalog = db040300;"
str_connect = str_connect & "User ID = user040300;"
str_connect = str_connect & "Password = psw1234;"
str_connect = str_connect & "Persist Security Info=True;"
db.Open str_connect
%>


2. ASP와 ORACLE의 OLE DB를 통한 연결.

OLE DB를 연결하는 방법은 위에서 설명한 방식과 같은 순서로 하면 됩니다.
oledb.udl의 등록정보->공급자에서 Microsoft OLE DB Provider for Oracle 혹은 Oracle Provider for OLE DB 중 한가지를 선택해서 사용하시면 됩니다.
MS에서 제공하는 프로바이더 보다는 Oracle에서 제공하는 프로바이더쪽이 더 좋다는 예기가 있습니다.
아무래도 오라클버전에 맞게 사용하려면 Oracle홈페이지(
www.oracle.com)에서 버전에 맞는 프로바이더를 다운받아서 사용하는게 좋겠죠.

3-4-mogrim.gif

Oracle Client를 설치할때 같이 설치되므로 Oracle Client를 설치하셨다면 애써 따로 다운로드 받을 필요는 없습니다.

데이터베이스로의 연결테스트를 할때 나는 몇가지 에러의 이유는 대략 다음과 같은 경우가 있습니다.
1) Oracle이 정상적으로 설치되지 않았다.
(Oracle에 대해서 거의 모르는 상태에서 처음 연습할때는 무슨일이든 일어날 수 있겠죠.)
2) 리스너가 작동하고 있지 않다.
(TNS 어쩌구 하고 나올때가 대략 여기에 해당하는 경우가 많습니다.)
3) 데이터베이스로 연결하는 과정에서 계정(ID/PASSWORD)이 잘못되었다.

기타 여러 이유가 있을 수 있겠지만 Oracle이라는 데이터베이스에 대한 이해부족으로 생기는 경우가 에러의 대부분입니다.

아무튼 정상적으로 연결테스트에 성공하면 확인을 누르고 oledb.udl 파일의 내용을 열어보면 다음과 같이 내용이 있을겁니다.

[oledb.udl 파일내용]
--------------------------------------------------
[oledb]
; Everything after this line is an OLE DB initstring
Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=ocilife;Data Source=ocilife
--------------------------------------------------
파일 내용을 참고하여
db_open.asp 파일을 만들면 다음과 같습니다.

[db_open.asp 파일내용]
--------------------------------------------------
< %' ORACLE OLEDB 커넥션 설정
Set db = Server.CreateObject("ADODB.Connection")
'OLE DB를 통한 SQL 서버의 접속문자열
str_connect = "Provider=OraOLEDB.Oracle.1;"
str_connect = str_connect & "Location = localhost;"
str_connect = str_connect & "Data Source = ocilife_db;"
str_connect = str_connect & "User ID = ocilife;"
str_connect = str_connect & "Password = ora;"
db.Open str_connect
%>
--------------------------------------------------

※ Oracle설치후 ocilife_db DB에 새로 생성한 ocilife/ora 계정으로 접속한 예입니다.

※ Oracle에서 계정만들기
-- ocilife 라는 명칭의 계정만들기 (Oracle SQL 프롬프트에서)
conn /as sysdba
create user ocilife
identified by ora
grant connect, resource to ocilife


3. ASP와 MySQL의 OLE DB를 통한 연결.

MySQL의 OLE DB 프로바이더는
www.mysql.com의 다운로드에서 받을 수 있습니다.
다운받으셔야할 파일의 이름은 MyOLEDB3.exe 이고 다운받은 파일은 일반적인 인스톨방법에 따라 설치하시면 됩니다.

3-5-mogrim.gif

oledb.udl 파일을 이용해서 세팅을 합니다

3-6-mogrim.gif
위의 그림과 같이 oledb.udl파일의 등록정보에서 MySQL 프로바이더의 정보가 나오지 않는 다면 재부팅을 살짝 한번 해주시기 바랍니다.

3-7-mogrim.gif
테스트중 주의할 점은 "연결 테스트에 성공했습니다"라는 alert창이 뜨지 않고 위와 같은 화면이 나올때에는 연결탭에서 입력한 내용중 정상적이지 않은 내용이 있어서 그런거니 다시한번 천천히 입력값을 확인해 보시기 바랍니다.
(예제그림에서는 localhost를 localhostzzz 라고 잘못입력했음)

[oledb.udl 파일내용]
--------------------------------------------------
[oledb]
; Everything after this line is an OLE DB initstring
Provider=MySqlProv;Data Source=mysql;Integrated Security="";Password=1111;User ID=root;Location=localhost;Extended Properties=""
--------------------------------------------------

[db_open.asp 파일내용]
--------------------------------------------------
< %' MySQL OLEDB 커넥션 설정
Set db = Server.CreateObject("ADODB.Connection")
'OLE DB를 통한 SQL 서버의 접속문자열
str_connect = "Provider=MySqlProv;"
str_connect = str_connect & "Location = localhost;"
str_connect = str_connect & "Data Source = mysql;"
str_connect = str_connect & "User ID = root;"
str_connect = str_connect & "Password = 1111;"
str_connect = str_connect & "Integrated Security=;"
str_connect = str_connect & "Extended Properties=;"
db.Open str_connect
%>
--------------------------------------------------

※ MySQL을 설치하면 기본적으로 생성되는 mysql DB에 root계정으로 접속한 예입니다.

연결이 잘된다고 좋아하기엔 아직 이릅니다.
테스트삼아 데이터를 입력하다보면 지쟈스한 상황이 발생하거든요.
관련사이트의 Q&A에 단골손님인 "한글문제"가 바로 그것입니다.
Q&A같은데서 "한글"이라고 검색하면 정말 많은 에러상황들이 나오죠.

실례로 Oracle을 설치할때 겪었던 상황인데 오라클사이트에서 기껏 설치파일 다운로드 받아서 인스톨시작하는데 갑자기 에러가 막 뜹니다.
왜 그럴까? 혹시 버전문제인가..? 아니면 파일을 다른걸 받았나.. 하면서 고민고민하다가 첨부터 해보자는 마음에 씨디3장 분량의 파일 새로받아서 다시 설치해봐도 같은문제가 발생하고.. 지쳐쓰러져갈 무렵에 발견한 원인이란게 알고보니 설치파일을 D:프로그램 밑에 다운받아서 설치하면 안된다였었죠.
D:program으로 이동해서 설치하니 잘 되더군요.. 하아~

JSP 프로그래밍 할때도 파일업로드할때 캐릭터셋 설정이 안되는 문제가 생기질 않나..
암튼 "한글문제"는 전혀 생각지도 않다가 느닷없이 복병처럼 나타나서 사람마음을 휘젓는데 정말 맘상합니다.

MyOLEDB3.exe이 2001년도에 만들어져서 그런지 한글을 사용하는데 문제가 있습니다.
MyOLEDB가 설치된 디렉토리를 찾아보면 MyProv.dll 파일을 볼 수 있습니다.

예전에 데브피아게시판에서 였던가 어떤분께서 올려놓으신 글이었는데
--------------------------------------------------
VB에서 ADO 를 통해서 Mysql를 사용하다보면..
한글을 사용하는데 문제가 있음을 알수 있습니다..
(이하생략)
원인을 살펴보니깐..
myoledb com객체에서 유니코드(wchar)로 받은 스트링을..
ascii(char)로 변환하는 과정에서 문제가 있더군요..
(이하생략)
제가 고쳐서 컴파일한 MyProv.dll을 같이 올립니다.
--------------------------------------------------
라는 글이 있었습니다. 해서 그분이 올려놓은 MyProv.dll파일을 다운받아서 파일을 교체하니 한글문제가 해결되었습니다.

[컴파일한 MyProv.dll 파일 다운로드]

후.. 이렇게해서 힘겹게 MySQL과 ASP를 OLE DB를 통해서 연결했습니다.

ODBC로 연결하는게 사실 OLE DB로 연결하는것에 비해서 훨씬 간편하지만 OLE DB를 사용하는 장점이 더 많기에 삽질 여러번 해가면서 설치를 했습니다.
기회가 되면 OLE DB를 사용할때 얻을 수 있는 장점을 피부로 느낄 수 있는 경우에 관해서 이야기 해보도록 하겠습니다.
 
 
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3165 TextArea 박스 내부에 밑줄이미지 삽입 99 단국강토 02.16 3870
3164 unix grep 명령어 사용법2번째 13 김영철 01.29 3864
3163 윈도우XP 풍선도움말 없애기 13 김영철 01.29 3858
3162 스타일이 적용된 selectbox 컨트롤 99 단국강토 12.30 3856
3161 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3854
3160 MS outlook 2007 백업 프로그램입니다. 2 coruscate 09.14 3850
3159 알아두면 좋은 포토샵 단축키 총모음 M 최고의하루 12.19 3830
3158 history.back() 시 폼데이터 유지하기 13 김영철 01.15 3822
3157 원격데스크톱 연결 (원격제어) M 최고의하루 12.19 3817
3156 swf파일을 fla 파일로 변환하기 M 최고의하루 02.04 3814
3155 [펌] 제11강 - ADO(Active Database Object) - Database Access Component Cobol vs C#-1 M 최고의하루 12.23 3806
3154 rsync 미러링을 통한 백업기법 13 김영철 01.29 3805
3153 체크박스 배열을 edit 수정페이지로 불러오기 M 최고의하루 01.12 3804
3152 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 3804
3151 미디어 컨트롤 소스 M 최고의하루 12.24 3790
3150 [MSSQL] 그룹별 상위 n명 가져오기 예제 13 김영철 01.23 3790
3149 체크박스 트리메뉴 99 단국강토 02.03 3789
3148 ps 명령어 사용법 13 김영철 01.29 3782
3147 제약조건(1) M 최고의하루 12.20 3776
3146 자신의 아이큐 알아보기 댓글1 17 미니 04.27 3775
열람중 웹프로그래밍 언어별 데이터베이스연결 (ASP편) 13 김영철 01.23 3771
3144 pcre 문법, preg | 13 김영철 01.13 3765
3143 PUTTY Telnet , SSH 접속 프로그램 99 단국강토 01.06 3760
3142 [Gmail] CSV 파일 Outlook에 적용하기 M 최고의하루 12.20 3758
3141 PDF 암호를 깨버리자 (APDFPRP) M 최고의하루 12.04 3745
3140 출력물로 판단하는 토너 카트리지 이상 증상 2 coruscate 09.14 3743
3139 contentEditable 속성 99 단국강토 02.09 3736
3138 DBA라면 이 정도는 알고 있어야 하지 않을까요 !!! 13 김영철 01.23 3728
3137 ServerXMLHTTP의 인코딩 문제 13 김영철 01.29 3726
3136 MSSQL에서 문자로 된 날짜 시간 차이값 얻기 13 김영철 01.24 3708
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취