C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[95] DB Programming Tip 3 --- Connect MS-SQL
에보니.^0^ [ebony] 8980 읽음    2001-06-09 15:13
안녕하세요 에보니입니다.

제가 좀 바쁜 관계로 이번팁은 좀 늦어졌습니다.

주로 코딩을 많이 하는 편이 아니지만---밤을 새워서 한다든가, 식음을 전폐한다거나---(참고로 제 주종목은 비즈니스 로직을 클래스화시키는 것 하고 프로그램 내부 로직을 설계하는 것이에여...전공도 공대쪽이아니라 수학을 전공하다보니까.) 그래두 아직까지는 많이 하는편입니다.

참고로 외국의 한 숙련된 프로그래머는 하루에 코딩을 길어봤자 20-30줄을 하고도 최상의 퍼포먼스는 물론
떳떳이 고액의 연봉으로 밥벌어 먹고 산대여.... 앙 부러버 한국엔 이런 회사 없나여... -0-;;

자 그럼 이번팁은 에보니(C++Builder)를 사용하여 MS-SQL 데이타베이스 서버에 연결하는 것입니다.

첫번째 팁의 오라클 데이타베이스와 마찬가지로 이 놈도 서버쪽과 클라이언트쪽 프로그램이 있어야 함다.

물론 시디를 넣고 서버를 걍 설치해뿌믄 클라이언트는 자동적으로 설치가 되는데... 클라이언트만 설치하고

싶을땐 설치옵션에서 사용자정의 설치(Custom)로 기들어가 Client Network Utility 이 넘만 설치해 주

면 되어여.... 최근의 2000은 걍 클라이언트만 깐다만 탁 찍으면 지가 알아서 잘 설치해 줌니다. 그리고

클라이언트 쪽 운영체제들(윈도우 95/98/98se/Me)에게는 당근 클라이언트 네트웍 유틸리티만 설치됩니다.

참고로 MS-SQL 7.0 의 경우는 데스크탑버젼은 98/98SE 도 설치가 되더군요. 혼자 익히기엔 좋아여.

부가적으로 MS 운영체제나 백 오피스로 서버들과 네트워크가 구성되어 잇스면 네트웍관리자나 dba에게

서버에 대한 정보들(팁1에서도 다룬것 같이 --- 사용자 계정과 패스워드, 그리고 서버의 호스트네임--보통

은 아이피주소, 서비스네임정보---보통 컴퓨터이름(NetBios네임)으로 먹어준다, 프로토콜--보통 TCP/IP

로 하는게 무난, 포트--MS-SQL은 주로 1433포트를 사용함니다, 버젼)을 요청하고 이것으로 Client

Network Utility 의 서버 별칭 (여기선 오라클 클라이언트와 마찬가지로 클라이언트 측 앨리어스) 을

설정하게 됩니다. 그럼 이 정보들을 다 챙기고 시작/프로그램에서 MS-SQL 의 Client Network Utility

를 실행시킴니다.

7.0의 경우 일반탭에서 Default Network 콤보박스에서 TCP/IP 로 때리고 추가(ADD) 버튼을 누름다.
2000의 경우 일반탭에서 사용할수 있는 프로토콜을 역시 TCP/IP 로 때리고 별칭(Alias) 탭에서 추가
버튼을 누름다.

누르믄 네트워크 라이브러리 구성 추가 창이 기나오는데 서버별칭에 자기가 맘에드는 이름을 써넣어여...
그러믄 이상하게도 연결 매개변수 창의 서버이름이 자동적으로 서버별칭이름과 같이 써지는 것을 볼수가 잇서여...
이넘을 서버의 아이피 번호로 바꿈다. 아 물론 네트워크 라이브러리는 TCP/IP를 때려서 확인 사살함다.
그러면 7.0 에선 포트번호가 써지고 2000에선 동적포트 확인과 포트번호가 보이져.

확인 (ok) 버튼을 눌러염. 그러믄 앨리어스(서버별칭)가 네트워크 라이브러리와 연결 매개변수와 함께
목록으로 나옵니다.

이것으로 클라이언트 쪽 앨리어스는 다 만들엇서여 간단하졈? 벌써 눈치를 깐 분들은 잘 아시겟지만 이렇게
생성된 앨리어스는 팁1 오라클에서와 마찬가지로 BDE 앨리어스를 생성하는데 사용됨다.

자 우리들의 에보니(C++Builder)가 어플에서 이 앨리어스를 사용해 디비프로그래밍을 할려면 BDE 가 나와야겟죠...
그 앨리어스에 대한 자세한 내용은 팁1에서와 마찬가지로 오라클과 같습니다. 단지 오라클의 Net Easy Config 가 Client Network Utility 로 바뀐것 뿐임다.

그럼 BDE 앨리어스를 어떻게 설정하는지 알아봅시다.

1. BDE Administrator를 실행시키고 Configuration탭의 Drivers/Native/MSSQL 메뉴를 설정한다.
  
    오라클에선  벤더와 DLL32이 각 버젼에 맞게 올바르게 정해져야 되엇서여.

    그러나 SQL 에선 7.0이던 2000 이던 DLL32는 SQLMSS32.DLL로 설정된 디폴트를 따라도 잘 먹어줌다.
   
    Vendor Init 도 지정안해져도 되어여.   

    그외에도 나머지 잡다한 중요할 것 같은 정보가 많이 있는데 입력안해도 됩니다. 오라클에서도

    마찬가지지만 여기서 중요하게 보여지는 것이 엄청많은데 예를 들면 데이타베이스이름, 서버이름,

    호스트이름, 사용자이름등등이 잇지만 다 입력 안함니다.
    

2. 1 의 화면에서 Database 탭을 눌러서 BDE 앨리어스를 생성합니다.

    이때 중요한 것이 1에서 설정한 네이티브 드라이버로 생성해야 한다는 거에요. 그러니까 여기선

    MS-SQL로 정해야 합니다. MS-SQL로 정하면 1에서 네이티브 드라이버를 설정할때와 거의 같은 사항들

    이 나타납니다. 여기서 서버네임 항목을 Client Network Utility 에서 추가한 앨리어스를 써여.

   끝을 누르면 콤보박스가 나타나는데 거기 만약 앨리어스가 표시되지 않으면 문제가 생긴것입니다.

   팁1에선 이랫지만 실제로 자기가 써줘도 됨니다. 문제가 생긴것은 아니엇서여.

   오라클과 마찬가지로 그 밖의 여러가지 사항등이 있으나 디폴트 값을 사용하셔도 됩니다.

   중요한 것은 서버네임으로 Client Network Utility 에서 추가한 앨리어스를 설정하는 것입니다.

   이것 하나만으로도 충분합니다. 호스트이름, 데이타베이스이름, 사용자명도 오라클과 마찬가지로

   비워둡니다.

3. C++ Builder 에서 Data Access, Data Controls 컴포넌트로 어플리케이션을 제작한다.

   이 내용또한 팁1에서 오라클과 같습니다.

   여기서 중요한 것은 자료모듈이건 웹모듈이건 심지어 폼위든 간에 데이타베이스 컴포넌트의 설정입니

   다. 데이타베이스 컴포넌트를 두 번 클릭해서 2 에서 설정한 BDE 앨리어스를 Alias Name 에 써 주

   거나 고릅니다. 그리고 Option 에서 Login Prompt 를 체크 빼고 적당한 데이타 베이스명을

   Database Name 에 기록합니다. Default 버튼을 누르면 Parameter Overrides 메모창에 디폴트

   설정이 나타나는데 여기서 USER NAME, PASSWORD 만 제외하고 나머진 다 제거하고 DBA로 부터 받은

   사용자 계정과 패스워드를 입력합니다. 데이타베이스 컴포넌트의 설정이 끝나면 이 데이타베이스 이름

   을 테이블이나 쿼리 컴포넌트의 DatabaseName 프로퍼티에 기록하면 제작하고 있는 어플리케이션에서

   서버의 데이타를 조작할 수 있습니다. 결국은 데이타베이스 컴포넌트의 사용자 정보로 데이타베이스 서

   버에 접속하는 것이 됩니다. 단 여기서 SQL 서버의 보안방법이 체크 포인트인데 상기의 내용은 서버의

   보안방법이 SQL 자체의 사용자 계정을 사용할 경우입니다. 간혹가다가 멍청이 DBA가 준 사용자 계정

   이 윈도우즈 계정이라 연결방법은 아무문제가 없는데 자꾸 사용자 계정이 잘못되엇다고 나오믄 이것을

   확인해 보세요. 또 서버가 랜내에 있지 않고 먼 경우 설정정보엔 이상이 없는데 타임 아웃이라는 경고메시지가 뜨는 경우 DBA에게 서버 연결대기시간을 늘려달라고 하시믄 됩니다.

여기 까지가 C++ Builder 에서 MS-SQL을 연결하여 데이타베이스 어플리케이션을 작성하는 방법입니다.

요약을 하자면...

1. 테이블, 쿼리등 데이타셋 컴포넌트 --- 데이타 소스 컴포넌트로 DB Grid 등의 컨트롤 컴포넌트와
   연결되며 데이타베이스 컴포넌트의 데이타베이스명을 사용한다.

2. 데이타베이스 컴포넌트 ---- BDE 앨리어스를 사용한다.

3. BDE 앨리어스 ----  Client Network Utility 에서 설정한 앨리어스를 서버네임으로 사용한다.
  
4. SQL 클라이언트 ---- Client Network Utility 에서 생성한 앨리어스와 정보를 가지고 데이타베이스
   서버에 연결한다. 단 앨리어스명은 서버내의 설정과 아무런 관계가 없다. 일단 데이타베이스 컴포넌트
   에서 설정된 사용자가 로그인이 되면 그 사용자에게 지정된 권한과 롤, 데이타베이스 내에서만
   작업 할수 있다.

결과적으로 C++Builder 를 사용하여 데이타베이스 프로그래밍을 한다는 것은 데이타베이스 클라이언트를 설정하여 그것을 BDE 와 연결시키고 어플내의 데이타베이스 컴포넌트의 설정을 가지고 데이타베이스 서버에 접속해서 각종 작업을 하는 것이엇습니다. 결과적으로 데이타베이스의 종류가 뭐가 되엇든 간에 기본적인 방식은 같다는 것입니다.

물론 다른 방법 예를들어 ODBC 나 그 밖의 다른 방식도 많지만 별 길지 않은 경험에도 이와 같은 방법이 제일 낫고 속도도 빠르더군여...

그러나 위의 방식은 제가 C++Builder 3 을 사용할때라 아직 ADO Express Components가 에보니에 장착되기 전의 일이고 최근엔 MS-SQL 의 경우 젯트엔진과 OLEDB와 같은 기술의 발전과 아울러 ADO&RDS 를 많이 사용하고 있는것 같습니다.

다음팁은 MS-SQL 에서 오라클의 SQL*PLUS 랑 비슷한 Query Analyzer(쿼리 분석기)에 대해서 좀 알아보고 아직도 많이 부족하지만 실전에서 제가 사용햇던 데이타베이스 프로그래밍 팁을 보여드리겟슴다.

날씨가 무척 덥군여... 모두들 건강 유의하시고 즐. 프 하세여. ^ㅅ^;;

+ -

관련 글 리스트
95 DB Programming Tip 3 --- Connect MS-SQL 에보니.^0^ 8980 2001/06/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.