강좌 & 팁
프로그램을 하다보면 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(); } }
[결과]
위에서도 잠깐 얘기해는데... jar파일은 sqljdbc.jar과 sqljdbc4.jar 두가지가 있습니다.
jdbc url과 드라이버명이 조금 틀리기 때문에 링크걸린곳을 꼭들러 차이점을 확인하신후 사용하시길 바랍니다.
감사합니다.