'jdbc'에 해당되는 글 2건

  1. 2010.02.03 MSSQL with JDBC
  2. 2009.09.11 SQLite (3)
프로그래밍/JAVA2010. 2. 3. 11:49
MSSQL은 Java 플랫폼에서 SQL Server2000, SQL Server 2005, SQL Server 2008에 표준 JDBC API를 통해 액세스할수 있는 JDBC드라이버(Type 4)를 제공합니다.

JDBC Type4는 순수 자바 드라이버에서 JDBC호출을 직접 DBMS고유의 네트워크 프로토콜로 변환합니다. 이것에 의해 클라이언트로부터 DBMS서버에 직접접속이 가능하며 성능이 우수합니다. 하지만 해당 JDBC 드라이버에서 사용되는 네트워크 프로토콜은 거의 문서화되어 있지 않으며, 해당 Vecdor를 통해 공급받아야 한다는 제약이 있습니다.

1. 설치

위 링크를 통해 MSSQL JDBC Driver2.0을 다운로드 할 수 있습니다.
SQL Server JDBC Driver2.0은 JDBC4.0과 호환되며 JDK 버전 5.0 이상에서 실행됩니다.

시스템 요구사항은 다음과 같습니다.

  • 지원하는 운영 체제: HP-UX; Linux; Solaris; Unix; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Vista Service Pack 1; Windows XP Service Pack 3
  • Java Development Kit: 5.0 이상 
  • SQL Server 2008, SQL Server 2005 또는 SQL Server 2000


위 사이트를 통해 다운받은 htm파일 마지막 부분의 Agreement를 동의하면 파일을 다운로드 받을수 있습니다.


다운로드 받은 파일의 압축을 풀면 아래 그림과 같은 jar파일을 확인할 수 있습니다.



2. sqljdbc.jar와 sqljdbc4.jar 차이점
sqljdbc.jar 클래스 라이브러리는 JDBC 3.0을 지원합니다.
sqljdbc.jar 클래스 라이브러리에는 JRE(Java Runtime Environment) 버전 5.0이 필요합니다. 
JRE 6.0에서 sqljdbc.jar을 사용하면 데이터베이스에 연결할 때 예외가 발생합니다.

sqljdbc4.jar 클래스 라이브러리는 JDBC 4.0을 지원합니다. 
이 라이브러리에는 sqljdbc.jar의 모든 기능과 함께 새로운 JDBC 4.0 메서드가 포함되어 있습니다.
sqljdbc4.jar 클래스 라이브러리에는 JRE(Java Runtime Environment) 버전 6.0 이상이 필요합니다. 
JRE 1.4 또는 5.0에서 sqljdbc4.jar을 사용하면 예외가 발생합니다.

참고: 응용 프로그램을 JRE 6.0에서 실행해야 하는 경우에는 JDBC 4.0 기능을 사용하지 않더라도 sqljdbc4.jar을 사용하십시오.


3. 예제코드
public static void main(String[] args) throws Exception {
		String url = "jdbc:sqlserver://서버주소:1433;DatabaseName=스키마명";
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		conn = DriverManager.getConnection(url, "아이디", "비밀번호!");
		stmt = conn.createStatement();
		rs = stmt.executeQuery("select id, passwd from userinfo");
		while( rs.next() ) {
			String code = rs.getString("id");
			String api = rs.getString("passwd");
			System.out.println(id);
			System.out.println(passwd);
		}
		rs.close();
		stmt.close();
		conn.close();
	}
SQL Server 연결에 대한 자세한 정보를 다음 링크를 참조하세요.

'프로그래밍 > JAVA' 카테고리의 다른 글

Javadoc  (1) 2010.04.30
이클립스에서 JUnit 사용하기  (0) 2010.04.22
Java 어노테이션(Annotation)  (0) 2010.04.21
Java Decompiler jad  (2) 2010.03.17
Apache Xml Security을 이용한 XML 전자서명  (1) 2010.03.17
MSSQL with JDBC  (0) 2010.02.03
JavaMail 첨부파일 읽기  (0) 2010.01.28
JavaMail with IMAP  (0) 2010.01.27
JavaMail을 이용하며 메일전송  (0) 2010.01.15
RSA 암호화  (0) 2010.01.15
Java 쓰레드  (0) 2009.12.04
Posted by devop

댓글을 달아 주세요

SQLite는 데이터베이스의 일종으로 SQL 데이터베이스 엔진을 탑재하는 경량화된 데이터베이스로서, MySQL, MS-SQL, Oracle과 같은 데이터베이스를 다루어 본 경험이 있는 사람이라면 SQLite에 손쉽게 익숙해질 수 있습니다. 

위에 언급한 MySQL 등의 데이터베이스들은 큰 큐모의 데이터베이스 프로그래밍을 지원하기에 적당하며 간단하고 빠른 용도의 데이터베이스로는 적합하지 않습니다. 그렇다고 파일을 사용하기에는 기능이 너무 제한적이며 데이터의 관리에도 어려움이 많습니다.

SQLite는 일종의 파일 데이터베이스로 MySQL 등과는 다르게 서버/클라이언트 모델을 지원하는 데이터베이스가 아니라, 로컬에서만 사용가능합니다. 원격 데이터베이스로의 Connection이 발생하지 않기때문에 데이터로의 접근이 매우 빠르며, 표준 SQL구문을 모두 지원하기 때문에 데이터의 관리도 용이합니다. SQLite는 그 경량성때문에 요즘 이슈가 되는 아이폰 등의 모바일 기기에 널리 사용되고 있으며 C, C++, Java, Object-C, Delphi, PHP 등 다양한 언어로 개발 환경을 지원하고, 다양한 운영체제에서 사용될 수 있습니다.

SQLite의 특징은 다음과 같습니다.

  • SQL92의 대부분을 지원한다. 다음은 지원하지 않는 몇 가지 기능들이다.
  • 단일 파일에 데이터베이스의 모든것을 포함한다.
  • ACID(Atomic, Consistent, Isolate, Durable) 보증
  • byte order에 관계없이 데이터 파일의 공유가 가능
  • 2테라바이트 (2^41)크기의 데이터 파일 생성지원
  • 효율적인 메모리 사용 : 25k라인정도의 C코드로 이루어졌다.
  • 많은 일반적인 명령을 실행하는데 PostgreSql과 Mysql보다 최소 2배이상 명령에 따라서 10-20배 이상 빠르다.
  • 하나의 구조체와 3개의 함수만 사용하는 정도로 sqlite를 사용하는 C/C++ 코드를 만들어 낼 수 있다.
  • TCL, Perl, PHP, .Net, Java, Python, SmallTalk, Ruby등의 다양한 언어지원
  • 다른 라이브러리등의 도움없이 작동된다. libsqlite.so와 sqlite 2개의 파일이면 작동 환경을 만들 수 있다.
  • Public Domain 라이센스를 가진다.
  • sqlite는 서버/클라이언트 모델을 지원하는 RDBMS가 아니다. 로컬에서만 사용가능하며 인터넷응용을 원한다면 별도의 서버 프로그램을 만들어야 한다.



1. Java에서 SQLite 사용하기
Java로 SQLite를 사용하기 위한 방법으로 Java Wrapper와 JDBC 드라이버가 있습니다. Wrapper는 C 라이브러리는 JNI를 통해 호출하는 방식으로 사용하기가 매우 번거롭습니다. JDBC 드라이버는 Java의 표준 JDBC 인터페이스를 통해 SQLite를 호출하는 방법으로 일반적인 데이터베이스를 다루는 방법과 거의 동일합니다.

SQLite JDBC 다운로드: http://www.zentus.com/sqlitejdbc/

SQLiteJDBC에는 기본적으로 SQLite3가 포함되어 있기때문에 별도로 SQLite를 다운로드 받지 않아도 됩니다.

Connection을 생성하는 코드는 다음과 같습니다.
public static Connection getConnection() {
		try {
			Class.forName("org.sqlite.JDBC");
			return DriverManager.getConnection("jdbc:sqlite:mydb.db");
		} catch (ClassNotFoundException e) {
		} catch (SQLException e) {
		}
		return null;
	}
Table을 생성하는 코드는 다음과 같습니다.
public void createTableTest() {
		Connection conn = null;
		Statement stat = null;
		try {
			conn = getConnection();
			if( conn != null ) {
				stat = conn.createStatement();
				stat.executeUpdate("drop table if exists mytable;");
				stat.executeUpdate("create table if not mytable(id int primary key);");
			}
		} catch (Exception e) {
			// exception handling
		} finally {
			if( stat != null ) try{ stat.close(); } catch(Exception e){}
			if( conn != null ) try{ conn.close(); } catch(Exception e){}
		}
	}
Select 쿼리를 수행하는 예제
public boolean selectQueryTest() {
		Connection conn = null;
		PreparedStatement stat = null;
		ResultSet rs = null;
		boolean result = false;
		try {
			conn = getConnection();
			if( conn != null ) {
				stat = conn.prepareStatement("select id from mytable where id=?;");
				stat.setLong(1, 10);
				rs = stat.executeQuery();
				if( rs.next() ) {
					if( 10 == rs.getLong("id") )
						result = true;
				}
			}
		} catch (Exception e) {
			// exception handling
		} finally {
			if( rs != null ) try{ rs.close(); } catch(Exception e){}
			if( stat != null ) try{ stat.close(); } catch(Exception e){}
			if( conn != null ) try{ conn.close(); } catch(Exception e){}
		}
		return result;
	}
한가지 주의해야 할 점은 SQLiteJDBC는 멀티쓰레드에서의 동기화를 지원하지 않기 때문에, 동시접근가능성이 있는 코드에 대해서 synchronized 블럭을 사용해야 합니다.(MySQL 등의 데이터베이스는 서버 프로세스에서 클라이언트간의 동기화가 이루어지기 때문에 synchronized 블럭을 사용할 필요가 없습니다.) 

'프로그래밍 > 오픈소스' 카테고리의 다른 글

이클립스에 GlassFish 설치하기  (0) 2011.02.17
SQLite with Eclipse  (1) 2010.05.06
SWF파일 분석 도구  (0) 2010.04.13
boost library 설치  (0) 2010.03.17
libcurl 사용하기  (0) 2010.03.15
SQLite  (3) 2009.09.11
ACE(ADAPTIVE Communication Environment)  (0) 2009.09.03
MySQL++  (0) 2009.08.21
C++ 암복호화 라이브러리 Crypto++  (0) 2009.08.20
C/C++ XML Parser TinyXml  (1) 2009.08.20
HttpClient와 Jericho Parser를 이용한 HTML 파싱  (0) 2009.07.28
Posted by devop

댓글을 달아 주세요

  1. SQLite로 작성한 DB를 이클립스에서 열람 및 수정할 수 있는 방법이 따로 있나요?

    2010.05.01 14:37 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 이클립스에서 SQLite 데이터베이스를 조작하는 방법을 포스팅 했습니다. http://lyb1495.tistory.com/entry/SQLite-with-Eclipse

      2010.05.06 14:08 신고 [ ADDR : EDIT/ DEL ]
  2. 좋은 정보 감사합니다 Trackback 해갈께요

    2010.08.12 12:36 신고 [ ADDR : EDIT/ DEL : REPLY ]