가끔 지식인을 통하여 도움을 받다보니, 가끔 답변을 달아 주고 있다. 그러다 보면 대학의 중간고사 쯤 되거나.. 기말고사쯤 되면, 정말 어이 없는 질문들이 쏟아지는 것을 보게된다. 그런 질문을 한 사람이 그정도도 몰라서 어이없다는 것이 아니라, 대학이라는 곳의 교수라는 분들이 얼마나 고리타분하고. 수구적이며. 학습을 하지 않는지...
그런 대표적인 것이 ODBC 데이터 베이스 연결이다.
ASP는 이제 구닥다리가 되어 버린 아주 오래된 서버 스크립트다.
(오래된 것이지만.. 나는 이것 밖에는 모른다. 그냥 처음에 PERL에 짜증나서 ASP를 접했고, 예전에도 그렇고 현재도 그렇지만 직업이 개발자가 아니기 때문에, 그 이상을 알 필요가 없었다. 이는 앞으로도 그럴 것이다. 어떻게 프로그램이라는 것이 작동하며 어떻게 최신 기술들이 흘러 가는지를 예전에 얻은 지식 위에 그냥 쌓아가면 되는 그런 사람이다. 그래서 ASP라는 놈을 고집하지도 않는다. )
ASP는 구닥다리다. 하지만, 학생들에게 프로그램(스크립트)이라는 것의 기초 또는 작동방식을 가르쳐주기에 여전히 가장 좋은 환경에 있다.
MS윈도우 / 메모장 / access의 MDB 파일... 이렇게 3가지만 있으면 누구나 ASP 프로그래밍을 체험할 수 있다. 이 3가지는 윈도에 기본 탑재되거나 용이하게 탑재 가능한 놈이기에 아주 저렴한 비용에 학생들은 교육을 받을 준비가 완료된다. 이는 학교에서 뿐만 아니라 집에도 마찬가지다. 프로그래밍과 관련하여 이렇게 저렴하게 학습자료를 준비할 수 있는 게 또 있을까? 더구나, 설치법을 일일이 학생들에게 가르쳐주지 않아도 이렇게 쉽게 준비가 완료되는 것이 또 있을까?
그러나, 이러한 "교수"님들의 뛰어나신 판단에도 불구하고, 그분들이 가르치고 계시는 몇가지로 인하여 나를 깜짝 놀라게 한다. 그중에 대표적인 것이 바로 ODBC 가 되겠다.
하지만, 그사이 세상은 놀랄만큼 바뀌고, 발전했지요. 그러니, 그 사이에 ODBC 를 능가할만한 것이 또한 등장할만도 하다는 느낌이 사정없이 들죠? 그렇습니다. 마이크로소프트는 그 사이에 이 방법을 구체하시켜서 ODBC 보다 뛰어난 성능을 가진 OLE DB 라는 것을 등장시켰습니다. 오옷... 대단한 MS (아부성은 아닙니다.) http://www.taeyo.pe.kr/lecture/9_Board2001/Board2001_02.htm 중에서 |
그렇다. ODBC보다 더 좋은 방법으로 OLEDB라는 놈이 존재하고 있는 것이다.
이론을 떠나서. 교육적 차원에서 실무적으로 ODBC보다 OLEDB를 가르치는 것이 학생들에게 왜 좋은 것일까?
- ODBC는 제어판에 들어서 DSN 설정을 복잡하게 해야 DB를 세팅한다. OLEDB는 소스에 OLEDB 연결 스트링을 추가하면 끝난다. 시간적으로 보면, 수백배 차이가 날 것이다.
- ODBC는 코딩한 소스를 다른 서버로 옮기면 바로 작동하지 않는다. 제어판에 들어가 또다시 해당 서버에 맞게 세팅해야 한다. 반면에, OLEDB의 경우라면 아무런 조건 없이 그대로 작동한다. (MDB의 경우 폴더 위치만 같으면 그대로 작동하며, 소스 자체에 server.mappath 등으로 mdb 파일명의 경로를 확인토록 하면, 위치가 달라져도 그 위치를 소스가 추적해서 적용하므로 관계없어진다)
이러한 문제로 인하여, ODBC의 경우 학생들이 DSN세팅을 조금 다르게 하여 과제를 제출하면... 담당교수 되는 분은 그 세팅을 일일이 맞추어주어야만 제출한 과제물을 확인할 수 있다. 이때문에 학생은 학생대로, 교수는 교수대로 불필요한 작업을 해야 한다. (odbc에서는 소스를 보는 것만으로는 DB연결방식을 확인할 방법도 없다)
반면, OLEDB의 경우에는 아무런 세팅없이도 내용을 확인할 수 있다. - ODBC를 웹호스팅 환경에서 사용하는 경우,서버의 관리자가 DSN세팅을 해주어야만 사용이 가능하다. OLEDB는 관리자의 도움없이 작동시킬 수 있다. asp에는 윈도2000 등 nt기반 서비스이며, dsn 세팅을 하려면 터미널서비스를 열거나 로컬 로긴을 해야한다. 일반적으로 nt계열은 보안 문제로 일반 유저에게 이러한 권한을 주지 않기에 odbc 설정을 하려한다면 관리자의 도움이 필요하게 된다. (호스팅 환경이라면, 다른 웹호스팅 사용자의 설정과 충돌이 발생할 수도 있다. 내가 관리자라면, odbc는 지원하지 않을 것이다.)
기술적으로 odbc 또는 oledb가 뛰어나고 말고는 전문가들의 영역으로 빼두더라도, 실질적으로 OLEDB가 유연한 연결 방식이라 하겠다. 그런데도 교수님들은 왜 ODBC를 학생들에게 가르치고, 학생들은 OLEDB를 몰라 ODBC로 과제를 제출하고 있는 것일까?
단순하다. 그 양반들이 그 변화를 몰랐기 때문이다. classic asp 책들은 asp 가 처음 발표되던 시절에 나온것이 대부분이다. 그 책들은 asp가 수정되고, 발전된 현실의 내용을 담고 있지 않다. 그래서, ASP 초기에 나온..... 이제는 가능하면 피해야 하는 코드들이 교과서에 포함되어 있는 것이고, 바로잡아지지 않고 있는 것이다.
그 이야기는 여기서 끝내고.. oledb 연결 스트링에 대하여 확실하게 배워두자.
먼저, ACCESS SQL ORACLE 할 것 없이 모두의 연결 스티링 만드는 법이다. 정말 간단하다. 외우지 않아도 언제나 가능한 방법이다. 단 한가지만 외워라.
UDL
외웠으면 끝났다.
어느 정도 pc를 다를 줄 아는 사람이라면..
바탕화면에 새텍스트 파일을 아무런 이름으로 만들고... UDL을 확장자를 변경한다. 그리고.. 더블클릭한다. 거기에 나온대로 하고.. 저장후에.. UDL 파일을 메모장으로 열어보라.. 그러면 연결스트링이 있을 것이다. ORACLE, MDB, SQL ... 웬만한 연결스트링을 만들 수 있다. |
무슨 말인지 잘 모르겠는 분은..
|
자 그럼 기본이 끝났다
이제 ASP에 실제로 적용하기 위한 코드는 만들어 보자. 메모장으로 조금전에 만든 UDL 파일을 열어 보자.
sql이라면
[oledb] ; Everything after this line is an OLE DB initstring Provider=SQLOLEDB.1;Persist Security Info=False;User ID=입력한sql접속id;Initial Catalog=데이터베이스이름;Data Source=sql서버ip |
access라면
[oledb] ; Everything after this line is an OLE DB initstring Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\1.MDB;Persist Security Info=False |
로 파일이 되어 있을 것이다.
이제 이 파일을 자신에 맞에 수정하자
예를 들겠다.
ms sql이고, 본인이 ADODB.Connection 를 Set ConnDB=Server.CreateObject("ADODB.Connection")식을 처리하였다면
set connDB=server.createobject("ADODB.Connection") conns= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=입력한sql접속id;Password=비밀번호;Initial Catalog=데이터베이스이름;Data Source=sql서버ip" connDB.open conns |
access이고 본인이 ADODB.Connection 를 Set ConnDB=Server.CreateObject("ADODB.Connection")식을 처리하였다면
set connDB=server.createobject("ADODB.Connection") conns= "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\1.MDB;Persist Security Info=False" connDB.open conns |
sql이면 위의 것을 access면 아래것으로 기존 odbc 연결부분만을 갈아치우면 끝이다.
참고1.. 위 연결 스티링을 conn.asp 파일로 저장하여 놓고, include 로 db연결이 필요한 페이지에서 사용하면 더욱 편리하다.
참고2.. access의 경우, mdb 파일의 위치를 server.mappath로 찾도록 해두면, 파일명이나 경로가 변해도 사용할 수 있어 편리하다.
accessFileName = "1.mdb" set connDB=server.createobject("ADODB.Connection") conns= "rovider=Microsoft.Jet.OLEDB.4.0;Data Source="& dblocations &";Persist Security Info=False" connDB.open conns |
- 2009년 5월 27일 수정
[출처] ODBC OLEDB 데이터 베이스 연결|작성자 뽀뽀로
'ASP 개발' 카테고리의 다른 글
ASP 인코딩 설정하기 (0) | 2015.11.19 |
---|---|
SiteGalaxyUpload 컴포넌트 사용법 (0) | 2015.11.19 |
[MS-SQL] 조인 방식 (Join Method) (0) | 2015.11.16 |
윈도에서 리눅스 파일시스템(EXT3, EXT4) 불러오기 - Ext2FSD (0) | 2015.11.12 |
MSSQL 보안 체크리스트 (0) | 2015.10.30 |