본문 바로가기

Java

Microsoft JDBC 시작하기

HOWTO: Microsoft JDBC 시작하기

기술 자료 ID : 313100
마지막 검토 : 2004년 9월 17일 금요일
수정 : 1.0

요약

이 문서에서는 JDBC용 Microsoft SQL Server 2000 드라이버를 사용하여 SQL Server 2000에 연결하는 방법을 설명합니다.


참고: JDBC용 Microsoft SQL Server 2000 드라이버의 설치 지침은 JDBC용 Microsoft SQL Server 2000 드라이버 설치 설명서를 참조하십시오.

JDBC 용 Microsoft SQL Server 2000 드라이버를 설치한 후 연결 URL이나 JNDI 데이터 원본을 사용하여 프로그램에서 데이터베이스에 연결할 수 있습니다. 이 문서에서는 연결 URL을 사용하여 데이터베이스 연결을 구성하고 테스트하는 방법을 설명합니다.

데이터베이스에 연결하는 한 가지 방법은 JDBC 드라이버 관리자를 통해 DriverManager 클래스의 getConnection 메서드를 사용하는 것입니다. 이 메서드를 사용하는 가장 간단한 방법은 URL, 사용자 이름 및 암호가 포함된 문자열 매개 변수를 사용하는 것입니다. 다음 절에서는 JDBC 프로그램에서 JDBC용 Microsoft SQL Server 2000 드라이버를 로드하는 방법을 설명합니다.

CLASSPATH 변수를 설정하려면

JDBC용 Microsoft SQL Server 2000 드라이버의 .jar 파일이 CLASSPATH 변수에 나열되어 있어야 합니다. CLASSPATH 변수는 Java Virtual Machine(JVM)이 컴퓨터에서 JDBC 드라이버를 찾을 때 사용하는 검색 문자열입니다. 드라이버가 CLASSPATH 변수에 없으면 드라이버를 로드하려고 할 때 다음 오류 메시지가 나타납니다.
java.lang.ClassNotFoundException: com/microsoft/jdbc/sqlserver/SQLServerDriver
다음 항목을 포함하도록 시스템의 CLASSPATH 변수를 설정합니다.
\설치 경로\Lib\Msbase.jar
\설치 경로\Lib\Msbase.jar
\설치 경로\Lib\Mssqlserver.jar
다음은 구성된 CLASSPATH 변수의 예입니다.
CLASSPATH=.;c:\program files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;c:\program files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;c:\program files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar

드라이버를 등록하려면

드라이버를 등록하면 JDBC 드라이버 관리자에게 로드할 드라이버를 지시하게 됩니다. class.forName 함수를 사용하여 드라이버를 로드하는 경우 드라이버의 이름을 지정해야 합니다. 다음은 JDBC용 Microsoft SQL Server 2000 드라이버의 드라이버 이름입니다.
com.microsoft.jdbc.sqlserver.SQLServerDriver
다음 예제 코드에서는 드라이버를 등록하는 방법을 보여 줍니다.
Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
				

연결 URL을 전달하려면

연결 URL의 형태로 데이터베이스 연결 정보를 전달해야 합니다. 다음은 JDBC용 Microsoft SQL Server 2000 드라이버의 템플릿 URL입니다. 사용 중인 데이터베이스에 맞는 값으로 변경하십시오.
jdbc:microsoft:sqlserver://servername:1433
다음 예제 코드에서는 연결 URL을 지정하는 방법을 보여 줍니다.
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433", "userName", "password");
				
서 버 이름 값은 IP 주소나 호스트 이름(네트워크가 호스트 이름을 IP 주소로 확인한다고 가정하는 경우)일 수 있습니다. 호스트 이름에 ping 명령을 실행하고 올바른 IP 주소와 함께 응답을 받는지 확인하여 서버 이름 값을 테스트할 수 있습니다.

서버 이름 뒤의 숫자 값은 데이터베이스가 수신하는 포트 번호입니다. 위에 있는 값은 예로 든 기본 값이므로 데이터베이스가 사용하는 포트 번호로 변경해야 합니다.

연결 URL 매개 변수의 전체 목록은 JDBC용 Microsoft SQL Server 2000 드라이버 HTML 도움말이나 온라인 가이드에서 "Connection String Properties" 절을 참조하십시오.

연결을 테스트할 예제 코드

다음 예제 코드는 데이터베이스에 연결하고 데이터베이스 이름, 버전 및 사용 가능한 카탈로그를 표시합니다. 서버 속성을 사용 중인 서버에 해당하는 값으로 바꾸십시오.
import java.*;
public class Connect{
     private java.sql.Connection  con = null;
     private final String url = "jdbc:microsoft:sqlserver://";
     private final String serverName= "localhost";
     private final String portNumber = "1433";
     private final String databaseName= "pubs";
     private final String userName = "user";
     private final String password = "password";
     // Informs the driver to use server a side-cursor, 
     // which permits more than one active statement 
     // on a connection.
     private final String selectMethod = "cursor"; 
     
     // Constructor
     public Connect(){}
     
     private String getConnectionUrl(){
          return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
     }
     
     private java.sql.Connection getConnection(){
          try{
               Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
               con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
               if(con!=null) System.out.println("Connection Successful!");
          }catch(Exception e){
               e.printStackTrace();
               System.out.println("Error Trace in getConnection() : " + e.getMessage());
         }
          return con;
      }

     /*
          Display the driver properties, database details 
     */ 

     public void displayDbProperties(){
          java.sql.DatabaseMetaData dm = null;
          java.sql.ResultSet rs = null;
          try{
               con= this.getConnection();
               if(con!=null){
                    dm = con.getMetaData();
                    System.out.println("Driver Information");
                    System.out.println("\tDriver Name: "+ dm.getDriverName());
                    System.out.println("\tDriver Version: "+ dm.getDriverVersion ());
                    System.out.println("\nDatabase Information ");
                    System.out.println("\tDatabase Name: "+ dm.getDatabaseProductName());
                    System.out.println("\tDatabase Version: "+ dm.getDatabaseProductVersion());
                    System.out.println("Avalilable Catalogs ");
                    rs = dm.getCatalogs();
                    while(rs.next()){
                         System.out.println("\tcatalog: "+ rs.getString(1));
                    } 
                    rs.close();
                    rs = null;
                    closeConnection();
               }else System.out.println("Error: No active Connection");
          }catch(Exception e){
               e.printStackTrace();
          }
          dm=null;
     }     
     
     private void closeConnection(){
          try{
               if(con!=null)
                    con.close();
               con=null;
          }catch(Exception e){
               e.printStackTrace();
          }
     }
     public static void main(String[] args) throws Exception
       {
          Connect myDbTest = new Connect();
          myDbTest.displayDbProperties();
       }
}

				
이 코드가 성공적으로 실행되면 다음과 비슷하게 출력됩니다.
Connection Successful!
Driver Information
        Driver Name: SQLServer
        Driver Version: 2.2.0022

Database Information
        Database Name: Microsoft SQL Server
        Database Version: Microsoft SQL Server  2000 - 8.00.384 (Intel X86)
        May 23 2001 00:02:52
        Copyright (c) 1988-2000 Microsoft Corporation
        Desktop Engine on Windows NT 5.1 (Build 2600: )

Avalilable Catalogs
        catalog: master
        catalog: msdb
        catalog: pubs
        catalog: tempdb
					

기본 연결 문제 해결

SQL Server에 연결할 때 나타날 수 있는 일반적인 오류 메시지는 다음과 비슷합니다.
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'user' 사용자가 로그인하지 못했습니다. 이유: 트러스트된 SQL Server 연결과 관련되지 않았습니다.
이 오류 메시지는 SQL Server 2000 인증 모드가 Windows 인증 모드로 설정된 경우 나타납니다. JDBC용 Microsoft SQL Server 2000 드라이버는 Windows NT 인증을 사용하여 연결하는 작업을 지원하지 않습니다. SQL Server의 인증 모드를 Windows 인증과 SQL Server 인증을 모두 허용하는 혼합 모드로 설정해야 합니다.
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]이 버전의 JDBC 드라이버는 Microsoft SQL Server 2000만을 지원합니다. SQL Server 2000으로 업그레이드하거나 다른 버전의 드라이버를 지정하십시오.
이 오류 메시지는 SQL Server 2000 이전의 SQL Server 버전에 연결하려는 경우 나타납니다. JDBC용 Microsoft SQL Server 2000 드라이버는 SQL Server 2000에서만 연결을 지원합니다.




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
Microsoft SQL Server 2000 Driver for JDBC
Microsoft SQL Server 2000 64-bit Edition
Microsoft SQL Server 2000 Standard Edition
키워드:
kbhowtomaster KB313100

자료출처 : http://support.microsoft.com/default.aspx?scid=kb;ko;313100

'Java' 카테고리의 다른 글

Gif Encoder 설치하기  (0) 2007.10.29
JSP에서 한글깨짐 처리  (1) 2007.10.29
네오솔루션!  (0) 2007.10.26
mssql JSP연동하기  (0) 2007.10.25
스트립트릿기본요소  (0) 2007.10.17