티스토리 뷰

반응형


요번에

서버를 하나 구입하게 되었는데

SQL 버전을

2005에서 2008로 올리기로 결정.

그에 따라 JDBC도 2005버전에서

JDBC 2.0으로 업데이트가 필요했고

또, 기존에 사용하던 

JDK 버전으로는

JDBC 2.0을 사용할 수가 없어서

JDK도 1.6.24 버전(JRE 6.0)으로

업데이트 했다.

사실 JDBC mssql 2005와 2.0은 

큰 차이는 없다.

연결 문구도 그대로 이고.

그런데,

한가지 신경쓰지 않으면 안되는 게 있는데

이 부분을 간과하면 연결부분에서 좀 시간을 뺏을 수 가 있다.

그 부분은 차후에 설명하기로 하고

먼저 일반적인 JDBC설치 및 설정을 알아보기로 한다.

먼저 JDBC 2.0을 구해야 한다.

아래의 링크를 클릭하면 구할 수 있다.
http://www.microsoft.com/downloads/ko-kr/details.aspx?familyid=99b21b65-e98f-4a61-b811-19912601fdc9&displaylang=ko




참고로 여기에서 다운받은 파일은 htm파일이며 파일을 열고 라이센스 동의를 하면 JDBC를 다운로드 할 수 있다.

파일을 다운로드 받게 되면 압축을 풀어서 적당한 곳에 위치시키면 되는데 통상적으로

C:\Program Files에 위치시키는 게 좋을 것이다.

그리고 나서 클래스 패스 설정.

윈도우 XP 기준으로 내컴퓨터 우클릭->속성->고급탭->환경변수 를 차례로 클릭하면 되고

윈도우 7은 내컴퓨터 우클릭->속성->고급시스템설정->환경변수를 차례로 클릭하면 된다.

그리고 시스템 변수의 CLASS PATH(없으면 새로 만들기로 작성)에서

JDBC 압축을 푼 홈 폴더\sqljdbc_2.0\kor\sqljdbc4.jar을 추가시켜 주면 된다.

여기서 기존과 한가지 달라진 점이 있는데, 경로를 보면 sqljdbc.jar 파일과 sqljdbc4.jar. 두개의 jar 파일이 있는 걸 알 수 있다.

만약 자신이 JRE 6.0을 사용한다면 sqljdbc4.jar을 이용해야 하고, JRE 5.0을 사용한다면 sqljdbc.jar을 이용해야 하니 참고.

클래스 패스를 잡았다면 이제 실제로 jar파일을 위치시켜 줘야 하는데 여기서 처음에 말한 신경써야 하는 부분이 등장한다.

내가 사용하던 기존의 JDK 버전에서 JAVA HOME은 JDK폴더만 있고, JRE 폴더가 없었기 때문이다.

보통은 JDK폴더 안에 lib, jre-lib-ext 두 폴더에 jdbc jar 파일을 옮겨 두고 쓰면 DB연결이 가능했었는데

지금은 JRE6 폴더의 lib-ext 폴더에도 똑같이 jdbc jar 파일을 옯겨 놔야 한다는 것이다.

이번에는 이 부분을 신경쓰지 못해서 모든 부분에 대한 설정을 하고나서도 왜 안되는지에 대해 해답을 찾느라고

상당한 시간을 잡아먹고 말았다. 사실 해답은 가까이에 있었는데도 말이다.

아무튼, 여기까지 했으면 물건을 위치시키고 지정해 주는 물리적인(?) 작업은 끝났고

프로그램에서 연결 테스트를 해 봐야 하는데, 이 부분은 JDBC 2005버전과 같기 때문에 그리 어렵지 않다.

JDBC 드라이버 로드

   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

연결 예

사용자 이름 및 암호를 사용하여 로컬 컴퓨터에서 기본 데이터베이스에 연결합니다.

jdbc:sqlserver://localhost;user=MyUserName;password=*****;

참고: 이전 예제에서는 연결 문자열에 사용자 이름과 암호를 사용했지만
Windows 운영 체제에서 응용 프로그램을 실행하는 경우 보다 안전한 통합 보안을 사용해야 합니다.
자세한 내용은 이 항목 후반에 있는 통합 인증으로 연결 섹션을 참조하십시오.

통합 인증을 사용하여 로컬 컴퓨터의 기본 데이터베이스에 연결하는 경우:

jdbc:sqlserver://localhost;integratedSecurity=true;

원격 서버의 명명된 데이터베이스에 연결하는 경우:

jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;

기본 포트에서 원격 서버에 연결하는 경우:

jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;integratedSecurity=true;

사용자 지정 응용 프로그램 이름을 지정하여 연결하는 경우:

jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;

명명된 다중 SQL Server 인스턴스

SQL Server에서는 한 서버에 여러 개의 데이터베이스 인스턴스를 설치할 수 있습니다. 각 인스턴스는 특정 이름으로 식별합니다.
SQL Server의 명명된 인스턴스에 연결하려면 명명된 인스턴스의 포트 번호를 지정하거나(기본 설정) 인스턴스 이름을 JDBC URL 속성
또는 datasource 속성으로 지정합니다. 인스턴스 이름이나 포트 번호 속성을 지정하지 않으면 기본 인스턴스에 대한 연결이 설정됩니다.
다음 예를 참조하십시오.

포트 번호를 사용하려면 다음을 수행합니다.

jdbc:sqlserver://localhost:1433;integratedSecurity=true;<more properties as required>;

JDBC URL 속성을 사용하려면 다음을 수행합니다.

jdbc:sqlserver://localhost;instanceName=instance1;integratedSecurity=true;<more properties as required>;

연결 URL에서 값 이스케이프 처리

공백, 세미콜론, 인용 부호와 같은 특수 문자가 삽입되어 있으므로 연결 URL 값의 일부를 이스케이프 처리해야 하는 경우가 있을 수 있습니다.
JDBC 드라이버는 이런 문자가 중괄호로 묶인 경우 이스케이프 처리를 지원합니다. 예를 들어 {;}는 세미콜론을 이스케이프 처리합니다.

이스케이프 처리되는 값에 특수 문자(특히 '=', ';', '[]' 및 공백)는 포함될 수 있지만 중괄호는 포함될 수 없습니다.
이스케이프 처리해야 하는 값에 중괄호가 포함된 경우 해당 값을 속성 컬렉션에 추가해야 합니다.

참고: 중괄호 안의 공백은 리터럴이며 잘리지 않습니다.

통합 인증으로 연결

JDBC 드라이버는 integratedSecurity 연결 문자열 속성을 통해 Windows 운영 체제에서 형식 2 통합 인증을 사용할 수 있습니다.
통합 인증을 사용하려면 sqljdbc_auth.dll 파일을 JDBC 드라이버가 설치된 컴퓨터의 Windows 시스템 경로에 있는 디렉터리에 복사합니다.

sqljdbc_auth.dll 파일은 다음 위치에 설치되어 있습니다.

<installation directory>\sqljdbc_<version>\<language>\auth\

참고: 32비트 JVM(Java Virtual Machine)을 실행할 경우 운영 체제가 x64 버전이라도 x86 폴더에 있는 sqljdbc_auth.dll 파일을 사용하십시오.
x64 프로세서에서 64비트 JVM을 실행할 경우 x64 폴더의 sqljdbc_auth.dll 파일을 사용하십시오.
Itanium 프로세서에서 64비트 JVM을 실행할 경우 IA64 폴더의 sqljdbc_auth.dll 파일을 사용하십시오.

또는 java.libary.path 시스템 속성에 sqljdbc_auth.dll의 디렉터리를 지정할 수도 있습니다.
예를 들어 JDBC 드라이버가 기본 디렉터리에 설치된 경우 Java 응용 프로그램이 시작될 때 다음과 같은 가상 컴퓨터(VM) 인수를 사용하여
DLL의 위치를 지정할 수 있습니다.

-Djava.library.path=C:\Microsoft SQL Server JDBC Driver\sqljdbc_<version>\enu\auth\x86

참고: JDBC 드라이버가 Windows 이외의 운영 체제에서 실행되는 경우에는 통합 인증을 사용할 수 없습니다.
Windows 이외의 운영 체제에서 SQL Server로 연결하는 경우 이 드라이버는 사용자 이름 및 암호 등
Windows 인증 자격 증명을 제공하지 않습니다. 이러한 경우 응용 프로그램에서는 SQL Server 인증을 사용해야 합니다.

IPv6 주소로 연결

JDBC 드라이버는 연결 속성 컬렉션 및 serverName 연결 문자열 속성에 IPv6 주소를 사용하도록 지원합니다.
jdbc:sqlserver://serverName과 같은 serverName 초기값은 연결 문자열의 IPv6 주소에는 지원되지 않습니다.
원시 IPv6 주소 대신 serverName의 이름을 사용하면 모든 경우의 연결에 원활하게 작동합니다. 자세한 내용은 다음 예를 참조하십시오.

serverName 속성을 사용하려면

jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;integratedSecurity=true;

속성 컬렉션을 사용하려면

Properties pro = new Properties();

pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");

Connection con = DriverManager.getConnection("jdbc:sqlserver://;integratedSecurity=true;", pro);


 


DB, 프로그래밍 등에 관한 검색















반응형
댓글
반응형
12-01 06:46
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함