|
박천일 님이 쓰신 글 :
: 안녕하십니까?
:
: 저~~ 아래에 ODBC설정없이 ADO쓰는 방법에 대해서 최보현님께 질문을 드렸던 사람입니다.
:
: 최보현님께서 답변하신데로
:
: TADOConnection 의 ConnectionString프로퍼티에 들어가서
:
: 공급자를 Microsoft OLE DB Provider for SQL Server로 한 후
:
: 연결 탭에서
:
: 서버이름 : 서버의 IP로 주었습니다.
: ID, PASS : 정확하게 넣었습니다.
:
: 그런 후 연결테스트를 하면 "연결되었습니다"로 나와서 개발을 하고 있는 컴퓨터에서는
: 연결이 잘 됩니다.
:
: 그런 후 다른컴퓨터에서 테스트를 할려고 2대의 컴퓨터에 깔아서 테스트를 해보니
: 에러가 나면서 연결이 안됩니다.
:
: 에러의 내용은 [DBNMPNTW] ConnectionOpne (CreateFile())
: 이라고 나더군요
:
: 왜 개발을 하고 있는 컴퓨터에서는 ODBC없이 연결이 잘 되는데 테스트용 컴퓨터(OS가 Win2000 한대(SQL서버 안깔려있습니다), WinNT4.0한대(SQL 서버 깔려있습니다)입니다)에서는 에러가 나면서 연결이 안될까요?
:
: 경험이 있으시거나 뭔가 느낌이 온다고 생각하시는분 답변좀 주십시요
:
: 그럼...
안녕하세요 에보니입니다.
원래 이 내용은 제가 팁으로 올릴려고 햇는데 제가 요즘 게을러져서 (낼이 휴가입니다) 못 올릴고 있었네요
간단히 예를 들자면 저 같은 경우 일일이 IDE 에서 셋팅을 안하고 걍 코딩 상으로 커넥 스트링을 데이타모
듈이나 웹 모듈이 생성될때나 테이타 커넥이 발생할때 동적으로 처리하는데 보세요.
ADO 도 비디이처럼 두가지 방법정도로 테이타 코넥을 할 수 있는데 오디비시랑 오엘이디비라는 애들을 사용
합니다. 오디비시는 왠만한 초보 데이타베이수 프로그래머라믄 그 설정 방법은 아실거구요.
근데 배포하는 입장에선 일일이 잡아주거나 아니믄 코딩으로 막노가다해서 설치시에 함께 잡아주는게 있는
데 물론 windows api 를 써야 되지만여. 저같은 경우 초보에서 좀 하자 빌더로 직접 코딩하여 디엘엘 형태
로 오디비시를 설치시나 프로그램 초기화 할때 잡아준 적이 있었는데 빌더 쓰다가 갑자기 api 를 할려고 하
자 그 무자비한 코딩량에 놀라자빠졌습니다 뭐 함수는 고작 6개 정도 밖에 안됬는데요. 나중에 기회가 되
면 팁에서 공개를 하겠슴다 저처럼 객기로 미친짓을 하실분들이 많다면.... -_-;;
그러나 에이디오의 경우 뭐 구지 이런 막노가다를 안해도 되는 방법이 있슴다.
간단하게 연결스트링에 한줄 추가로 오디비시가 동적으로 생성이 됩니다. 특히 액세스의 경우가 그런데...
자 보세요.
**** 액세스를 사용할때 오디비시 동적 생성을 위한 커넥션 스트링 ******
액세수 데이타베이스 파일이 배포하는 실행화일 밑의 Data 디렉토리의 mortalpain.mdb 일때 ^0^넘은 커넥션
^0^->ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + ExtractFileDir
(Application->ExeName) + "\\Data\\mortalpain.mdb";
짜잔 해버리면 DSN 을 안잡아도 됩니다.
헐, 단 하위버젼의 윈도우즈 일 경우 Mdac 을 설치하시는 건 당연하죠.
**** 액세스를 사용할때 오엘이 디비를 통한 직접 연결을 위한 커넥션 스트링 *****
^0^->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;ID=^0^;PWD=에보니;Data Source=" +
ExtractFileDir(Application->ExeName) + "\\Data\\mortalpain.mdb";
이건 걍 덤임니다. 코딩으로 함 해본거구여. IDE에서 해버리면 되어여.
그럼 님이 물으신 답변입니다. 님의 경우 그런 현상은 당연한 것입니다. 서버가 어디에 있는지 몰르니까 못
찾아간거에염. 단지 데이타베이스 어플리케이션이 붙어라 붙어라 한다고 해서 데이타베이스에서 기 붙는게
아니에염. 당근 개발하고 있는 로컬 컴에서는 잘 기 붙죠. 그럼 자 보세요.
**** SQL 을 사용할때 오엘이 디비를 통한 직접 연결을 위한 커넥션 스트링 *****
^0^->ConnectionString = "Provider=SQLOLEDB;Server=에보니;Database=MORTALPAIN;UID=icon;PWD=data"
뭐 빌더에서 여러가지 복잡하게 연결 스트링을 만드는데 이렇게만 써 줘도 다 됨다. 사실 웹에서 사용하는
방법이죠. 여기서 주의하게 봐야 될것은 Server=에보니 라는 대목입니다.
Database=MORTALPAIN;UID=icon;PWD=data 이부분은 MORTALPAIN 데이타베이스에 icon 이라는 사용자와 data
라는 패스워드로 붙겟다는 뜻입니다. 사용자와 패스워드 기본 데이타베이스의 정보는 당연하고 핵심적인 사
항이죠. 자 그럼 Server=에보니 는 무슨 뜻일 까요? 이건 말 그대로 어디 서버를 찾아가겠다는 뜻입니다.
로컬컴에서는 에스큐엘을 깔면 컴의 넷바이오스이름이 기본적으로 서버의 서비스네임이 설정되게 되어 있슴
다. 그러니까 당연히 로컬 컴에서는 잘 기 붙을 수 밖에 없죠. 그러믄 다른 컴이나 리모트 컴에서는 어케
기붙나요? 질문이 떠오르죠. 사실 제가 팁코너에서 비디이로 직접 RDBMS 를 붙는 방법을 써 놓은 것을 보
신 분이라면 퍼뜩 떠올릴 겁니다. 그렇죠? 바로 클라이언트 네트웍 유틸리티의 앨리어스 네임을 써 주시면
됩니다. 그러니까 리모트 컴에선 이 서버가 어디에 있는지 몰르니까 클라이언트 네트웍 유틸리티를 해당
리모트 컴에 설치하시고 앨리어스를 잡아주시고 그 앨리어스 네임을 위의 코딩한 부분과 같이 설정해 주시
면 됩니다.
그러니까 설치후 클라이언트 네트웍 유틸(이것만 까세요 --- 서버까지 통째로 기 깔면 안되죠? 사용자정의
로 설치하셔야죠?)에서 서버 앨리어스 네임을 에보니로 잡고 서버 네임에다 해당 데이타베이스의 아이피 주
소를 잡아주시면 됩니다.
분명히 될껍니다. 이런 글이 넘 길어졌네요. 오라클도 이 연결 스트링으로 붙을 수 있습니다만 그건 또 다
음을 기약하겟슴니다.
사실 에보니(빌더)로 디비 프로그래밍은 조금만 맛 보고 바짝 조으면 누구나 왠만한 조작은 할 수 있게 됩
니다. 그러나 몇번만 하면 노가다가 되기 쉽고 쉽게 질리게 되죠 따져야 되는 것도 되게 많구요.
(저 같은 경우 오브젝 레포지터리에 기본 템플릿을 두고 꺼내 쓰는 식으로 이 문제를 해결하고 있는데
시간이 지나면 그것도 질리게 됩니다 뭐 빌더의 막강함에 기생하는 것도 좋습니다. 사실 RAD 는 이런게
강점이죠)
그러나 이왕 하실때 많은 병아리 초보 개발자분들에게 아키텍쳐 위주로 폭 넓게 공부를 하실 것을 권해 드
립니다. 그리고 대부분의 큰 프로젝일 경우 디비는 필 수 입니다. 너무 얕게 공부하시면 코더밖에 되지 않
습니다. 자신의 실력도 실력이거니와 PM 급으로 성장 하실려면 넓고 깊게 공부하셔야 됩니다.
그럼 즐 프 하세용~ ^0^n
|