프로그램을 하다보면 DB를 연결해야 할때가 있습니다.

보통 DB하면 오라클, MySQL, MS-SQL등이 일반적으로 많이 사용 될꺼라 생각 됩니다.

오라클, MySQL은 Java와 연결해 본적이 있는데..... MS-SQL은 아직 해본적이 없었습니다.

이번에 MS-SQL과도 연결해야 할일이 생겨 샘플을 한번 만들어 봤습니다.


MS-SQL의 JDBC드라이버는 아래의 URL에서 받으세요.

[다운로드]http://www.microsoft.com/ko-kr/download/details.aspx?id=11774


저는 언어를 한국어로하여 sqljdbc_4.0.2206.100_kor.tar.gz압축 파일을 다운로드 하였습니다.

압축을 풀어보니 sqljdbc_4.0안에 kor폴더가 있더군요. 아마도 언어 별로 뭔가를 관리 하는게 아닐까 생각해봅니다.

역시나, install.txt와 license.txt파일을 열어보니 한국어로 되어있네요.


jar파일은 sqljdbc.jar과 sqljdbc4.jar 두가지가 있더군요.

뭘 사용해야 하나 찾아보니..... 아래의 url에 설명이 되어 있습니다. 참고하세요.

[링크]http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&pageno=0&wid=1116&rssMode=1&wtype=0


샘플소스는 MS-SQL에 접속해 데이터베이스 정보를 표시하는 소스입니다.


[샘플 소스]

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class MsSQLConnect {
 
 
	/**
	 * 
	 * DB프로퍼티 표시
	 * @param url
	 * @param userId
	 * @param userPw
	 * @param driverNm
	 */
	public void displayDbProperties(String url, String userId, String userPw,
			String driverNm) {
 
		Connection con = null;
		DatabaseMetaData dm = null;
		ResultSet rs = null;
		try {
			con = this.makeConnection(url, userId, userPw, driverNm);
			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;
 
			} else
				System.out.println("Error: No active Connection");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (con != null)
					con.close();
				con = null;
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
 
		dm = null;
	}
 
	/**
	 * 커넥션을 취득해 반환 DB커넥션 취득
	 * 
	 * @param url
	 * @param userId
	 * @param userPw
	 * @param driverNm
	 * @return
	 * @throws SQLException
	 */
	public Connection makeConnection(String url, String userId, String userPw,
			String driverNm) throws SQLException {
 
		Connection conn = null;
 
		try {
			// 1. JDBC 드라이버 로드
			Class.forName(driverNm);
			// 2. DriverManager.getConnection()를 이용하여 Connection 인스턴스 생성
			conn = DriverManager.getConnection(url, userId, userPw);
 
			if (conn != null) {
				System.out.println("Connection Successful!!!");
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException sq) {
			sq.printStackTrace();
		}
 
		return conn;
	}
 
	public static void main(String[] args) throws Exception {
 
		// 유저ID
		String userId = "sa";
		// 유저 패스워드
		String userPw = "testtest";
 
		// 드라이버명
		String MSSQL_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
 
		MsSQLConnect myDbTest = new MsSQLConnect();
		myDbTest.displayDbProperties(getMsSQLJDBCUrl(), userId, userPw,
				MSSQL_DRIVER);
	}
 
	/**
	 * MS-SQL JDBC url만들기
	 * @return
	 */
	public static String getMsSQLJDBCUrl() {
 
		StringBuilder url = new StringBuilder();
		url.append("jdbc:sqlserver://");
		url.append("localhost"); // 접속호스트
		url.append(":");
		url.append("1433"); // 포트번호
		url.append(";");
		url.append("databaseName=");
		url.append("TEST"); // DB명
		url.append(";");
		url.append("selectMethod=");
		url.append("cursor");
		url.append(";");
 
		return url.toString();
	}
}



[결과]

mssql.PNG




위에서도 잠깐 얘기해는데... jar파일은 sqljdbc.jar과 sqljdbc4.jar 두가지가 있습니다.

jdbc url과 드라이버명이 조금 틀리기 때문에  링크걸린곳을 꼭들러 차이점을 확인하신후 사용하시길 바랍니다.


감사합니다.