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

웹프로그래밍 언어별 데이터베이스연결 (ASP편)
작성자 : 13 김영철
등록날짜 : 2009.01.23 00:25
3,389
우선 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

번호 제목 글쓴이 날짜 조회
3045 하드,CPU,RAM 지원표 M 최고의하루 12.18 3392
3044 Digital로 표현된 수묵이 번지는 효과- Cel.. 글 : 김기병(주식회사 ECO 디자인팀 대리, 경인여대 출강) 99 단국강토 01.12 3391
열람중 웹프로그래밍 언어별 데이터베이스연결 (ASP편) 13 김영철 01.23 3390
3042 띠 구하는 함수 13 김영철 01.14 3390
3041 제약조건(1) M 최고의하루 12.20 3386
3040 DOS창에서 비디오카드 모델명 확인 하기 2 천진난만 02.20 3381
3039 [mysql] mysqladmin 사용법 13 김영철 01.29 3371
3038 익스플로러(IE)플러그인ActiveX액티브엑스활성화특허침해에따른 설계변경패치에대한 개발코딩간편변경방법 13 김영철 01.14 3370
3037 체크박스 배열을 edit 수정페이지로 불러오기 M 최고의하루 01.12 3369
3036 MSSQL Server DBA 가이드-5 M 최고의하루 12.26 3368
3035 옷주름만들기 10 액션쟁이 01.12 3363
3034 PHP 환경 설정을 변경하는 방법 13 김영철 01.14 3361
3033 AJAX관련 IE 버그. -1072896658 13 김영철 01.29 3361
3032 포토샵 cs4에서 레이어가 살아있는 gif파일 열기 2 핑크 01.20 3358
3031 내 PC IP 아는 간단한 방법 댓글1 2 성공맨 04.03 3356
3030 색보정,칼라링^^ 10 액션쟁이 12.31 3355
3029 총알자국 10 액션쟁이 01.12 3355
3028 select BOX 동적으로 선택하기 13 김영철 01.15 3355
3027 register_global 가 off 되어 있을때 사용방법 13 김영철 01.15 3354
3026 간단한 PHP Class예제 (DB Class) 13 김영철 01.13 3353
3025 마우스 On 시에 표 색상 바꾸기 99 단국강토 02.10 3350
3024 [CSS]링크 위에 마우스커서 올라가면 누른 효과 99 단국강토 02.05 3347
3023 CPU 점유율 점검 및 CPU최적화 기초 기법 99 단국강토 12.30 3347
3022 php에서 유니코드 인코딩하기 13 김영철 01.13 3346
3021 특수문자 입력 방지하기 99 단국강토 02.19 3341
3020 input box꾸미기 99 단국강토 01.19 3340
3019 windows 2003 MySQL 서비스 프로그램 등록 1067 에러 13 김영철 01.29 3339
3018 저항(전자회로) 읽는 프로그램 2 춘몽 11.22 3335
3017 [JS] 자바스크립트 typeof[(expression]] 99 단국강토 02.16 3331
3016 메트로놈 입니다.. 2 춘몽 11.22 3323
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취