*.udl 파일 만들기 1. 바탕화면 > 마우스 오른 버튼 > 새로만들기 > txt파일 > 확장자를 udl 로 바꾼다 > 이름은 아무거나 지정 (ex. db.udl 처럼) > 바탕화면에 db.udl 파일이 만들어진다.
DB연결 Provider 정보 얻기 2. db.udl 파일을 마우스 오른 버튼 누름 > 속성 누름 > 상단의 탭에서 "공급자" 선택 > Microsoft OLE DB Provider for SQL Server 선택(sql2005, 2008을 사용하는 경우다. 엑셀, 엑세스를 DB로 쓸 경우는 다르다.) > DB서버 이름, 관리계정, 사용할 DB를 선택하고 > 확인 > db.udl 파일을 메모장으로 open 하면 일반적으로 다음과 같은 DB연결 구문을 얻을 수 있다.
Provider = SQLOLEDB.1; Persist Security Info = false; Initial Catalog = 사용할 DB명 나옴; Data Source = 서버이름(필자의 경우 jaglawyer.wo.tc); User ID = sa 또는 사용할 아이디; Password = DB접속 비밀번호;
한창 잘 되던것이 어느 순간부터 아니 ... 정확하게 말하면 최신 윈도우 업데이트를 하고난 후 부터 ADODB.Command 객체에 뭔가가 이상이 있다는 에러만 뱉어내면서 DBHelper가 요지부동이었죠.
개발은 모두 노트북에서 하고 한 대는 윈도우 xp pro sp3 에 iis5.1 한 대는 윈도우 서버 2003에 iis6
참고로 DB는 sql 2005 express, 엑셀2003/2007, 엑세스 2003/2007을 사용한답니다.
둘 다 최신업데이트를 한 상태.
결론은 꿈쩍도 안하던 DBHelper가 다시 잘 움직인다는 겁니다.
잘 안되시는 분들은 아래처럼 해보세요.
특히 로칼 환경(http://localhost/~~~) 개발하시는 분들 중 global.asa 파일 없는 경우도 있는데 global.asa 파일 하나 만들고 아래 코드를 넣어서 iis를 정지했다가 다시 시작한 후 브라우저를 열어서 다시 실행시켜보세요. 아마 DBHelper가 잘 동작할것입니다.
global.asa 파일이 있다면 상단에 META 어쩌고 하는 부분에 아래 코드를 추가해보세요.
<!-- METADATA TYPE="typelib" NAME="ADODB Type Library" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" -->
윈도우 최신업데이트가 되면서 msado15.dll 이넘이 제대로 움직이지 않게 되어버렸나봅니다.
일반적으로 사용하는 많이 사용하는 데이타베이스는 mySql이며 asp나 asp.net 으로 사이트를 구축하는 경우에는 MS-SQL을 주로 사용한다. 기타 기업용 DB는 오라클(Oracle)을 많이 사용하고 있지만 최근에는 MS-SQL 2005 사용이 점차 증가하는 추세다.
asp 플밍을 한지 100일 조금 안되었는데 asp로 mySql과 오피스 엑세스(Access)를 로컬 데이타베이스로 하여 간단하게 연결을 해본 경험으로 이번에는 오피스 엑셀(Excel) 파일을 asp로 연결해보았다.
엑셀은 여러 분야에서 참 많이 활용되고 있는 재미난 도구인데 비주얼베이직 구문을 사용하는 asp 프로그래밍을 조금만 이해하면, 엑셀은 데이타베이스로 사용하고 웹브라우저로 엑셀 파일에 들어있는 내용들을 요리할 수 있게 된다. 오늘은 asp로 엑셀파일에 있는 내용을 웹브라우저로 불러내볼 것이다.
기본적으로 알아야 할 개념은 엑셀파일명은 데이터베이스 이름, 시트 이름은 테이블 이름이라 생각하면 된다.
또한 제어판에서 ODBC 설정을 할 때 Microsoft Excel Driver를 선택하여 시스템 DSN으로 잡아주자. 필자는 xls라는 이름으로 시스템 DSN을 세팅하였다.
이제 구문을 하나씩 들여다보자. Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\폴더경로\엑셀파일명.xls;Extended Properties='Excel 8.0;HDR=YES' 매우 중요해서 빨간색으로 표시했다. 반드시 이렇게 사용해야 한다.
이 구문을 strConnection 이라는 변수에 담아서 연결한다. 아래 소스를 보자.
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\폴더경로\엑셀파일명.xls;Extended Properties='Excel 8.0;HDR=YES'" ==> 이와 같이 변수(밥통)에 담아서 공급자 연결을 한다.
Set xls_con = Server.CreateObject("ADODB.Connection") xls_con.ConnectionString = strConnection xls_con.open ==> asp프로그램을 조금이라도 해봤다면 쉽게 이해할 수 있는 구문이다. ADODB.Connection 개체를 사용하여 엑셀파일과 연결한다.
xls_qry = "Select * from [사용할 시트 이름$]" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open xls_qry, xls_con ==> sql을 사용할 때 데이터 내용을 불러오는 구문이 Select다. 엑셀파일은 데이터베이스, 시트는 테이블이라고 앞서 말한것과 같이 테이블 명 대신에 시트이름을 넣어준다. 반드시 시트이름 뒤에는 $를 표기한다. [시트이름$] 이렇게 말이다.
그리고 역시 레코드셋을 생성하여 열고(Open) 쿼리를 실행시킨다. 여기서는 xls_qry라는 변수에 쿼리문을 담았다.
가져온 값들은 레코드셋에 저장되어 있기 때문에 rs("필드명")으로 화면에 뿌려주면 되는 것이다.
작업이 끝나면 개체들은 close 하고 nothing으로 그릇을 비워야 한다.
어떤가? 아주 쉽지 않은가? 해보면 별것 아닌데 몇일간 msdn사이트를 뒤지고 책을 뒤져가며 고민하고 얻어낸 결과물이다.
아래 전체 소스 - 참고하시기 바람 (xlsTest.asp 와 같이 파일명.asp로 저장해서 활용해야 함은 당연한 것이니 질문하지 말 것. asp 파일이니 당연히 로컬에서 iis는 잘 돌고있어야 한다. 지극히 당연한 것이다. 왜 안되냐고 질문하지 않기 바람. 쩝....)
php와 비베(VBA) 어플을 다루다가 - 실력은 형편없지만 - asp, sql2005, 닷넷을 다루고 있는데, 역시 프로그래밍은 기라성같은 고수 선배님들의 코드를 들여다보고, 거기에 사용된 함수, 클래스를 찾아서 구조와 원리를 파악하고 손가락으로 열심히 키보드를 두드려서 코딩하고 결과내보고 벌레잡기(디버깅)를 하는 과정에서 성장됨을 또 한번 깨쳤다.
산 정상을 향해 올라가는 것 처럼, 함수 하나 클래스 하나 인클루드 된 파일 하나 이렇게 진도를 나아가다 보니 어느덧 나 자신도 고수가 된 듯 착각속에 빠지기도 했다. 갈 길은 먼데 말이다. ^^
헬기 조종간에서 손을 놓은지 벌써 7년을 넘기고 있는데 그동안 이런 일, 저런 일 하면서 프로그램을 다시 만지고 있는 상황. 중학교 2학년 때 부터 시작한 컴퓨터. 항공과 컴터는 오늘까지 나하고 질긴 인연을 같이 해 오고 있지만 사실 세상이 알아주는 실력은 아니다.
공부 또한 토목공학, 기계공학, 전자계산학, 항공(조종), 사이버포렌식(Cyber Forensics)을 두루 거쳤으나 아직 매듭지은 것은 없다. 아니 이제 한 매듭 지으려 하는데, "강력한 플밍 실력"이 관문으로 나를 기다리고 있는 것이다.
asp는 php를 쓸 때와 달리 마이크로 소프트(이하 MS) 제품군에서 다양하게 응용되는 힘을 발휘하는 장점이 있는데 이를 이용해보면서 MS를 무조건 욕했던 내가 사실 부끄러워지기는 했다. 그러나 MS 판매정책에 대한 점수는 F를 주고 싶다.
아무튼 고수열전같은 분위기로 끌고 가면 곱게 성장한 '강단파'와 거칠게 성장한 '강호파'로 일단 나눌 수 있는데 양단의 경험을 한 부류도 있고. 여기서 '플밍(프로그래밍)의 고수'를 가린다고 하면 누가 최고의 고수, 승자가 될 까? 이론과 실전을 차분하게 공부해온 강단파 출신이 승자가 될 수도 있다. 거칠게 현장에서 배우고 익힌 실력으로 무장한 강호파 출신이 승자가 될 수도 있다. 또 강단과 강호를 넘나들며 기량을 자랑하는 자가 승자의 위치를 굳힐 수도 있다.
내가 체험한 결론은 이렇다. "삼성 애니콜 휴대폰의 정밀함 처럼, 끝까지 질기게 달려붙어 정밀하게, 치밀하게, 지독하게, 소 처럼 꾸준하게 앞으로 나아가면서 마침내 일을 매듭지어버리는 자가 진정한 고수이고 진정한 승자다."
"플밍은 학사, 석사, 박사 학위로 하는게 아니고 열정과 끈질김 하나로 매듭짓는 인생의 예술이요 철학이요 멋 이다."
댓글을 달아 주세요