본문 바로가기

프로그래밍/JAVA

JAVA SQLLite3 사용하기 (3)



※ 앞서 미리 프로젝트에서 라이브러리가 추가되었고, DBMS 을 통해 데이터베이스가 생성되었다

   가정하에 진행합니다.

 

※ 이미 MySQL, 오라클 같은 JDBC 프로그래밍이나, Arraylist, 제네릭 프로그래밍을 알고있다는 가정하에 진행하겠습니다. (모두 세세히 풀어쓰기엔 좀 무리가 있습니다.)

 

 

 

 

 

1. 우선, SQL 매니져로 생성했던, 데이터베이스를 프로젝트내 폴더를 하나 생성해서 복사합니다.

(위 프로젝트에서는 resource 라는 폴더명으로 생성후 넣었습니다.)

 

 

이제 모든 준비는 끝났습니다. 이제 실제적으로 코드레벨에서 해당 데이터베이스에 접근해보도록 하겠습니다.

 

먼저, 저는 두개의 패키지를 나누어 관리하겠습니다.

 

com.db 패키지

 - Datainfo 라는 클래스는, 데이터베이스에 존재하는 필드인 id, name, bookcode 에 대한 데이터를 관리할 게터/세터 정보 클래스 입니다.

 - SQLlite3 라는 클래스는, 데이터베이스에 대한 모든 접근이 이루어지는 클래스 이고,

 

com.ui 패키지

 - window 라는 클래스는, SQLlite3 객체를 생성하여 Main 함수에서 접근하는 클래스 입니다.

 

 

 

- SQLlite3 Class

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class SQLlite3 {

	private Connection conn;
	private Statement stmt;
	private ResultSet rs;
	
	
	//초기 드라이버 한번 로드
	static {
        try {
            Class.forName("org.sqlite.JDBC");
        } catch(Exception e) { e.printStackTrace(); }
    }
	
	public SQLlite3() {
		
	}
	
	//데이터베이스 연결 메소드
	public boolean dbConnect() {
	    try {
	    	conn = DriverManager.getConnection("jdbc:sqlite:resource/db.sqlite"); //jdbc:sqlite:폴더명/파일이름
			stmt = conn.createStatement();
	    } catch ( Exception e ) {
	      System.err.println(e.getClass().getName() + ": " + e.getMessage());
	      return false;
	    }
	    return true;
	}
	
	
	//UPDATE, INSERT, DELETE 쿼리 수행
	public void setQuery(String query) {
		try {
			stmt.executeUpdate(query);	
		} catch (SQLException e) {
			e.printStackTrace();
		}	
	}
	
	//SELECT 특정 레코드 받아오기
	public ArrayList getSearchQuery(String query) {
		
		ArrayList data = new ArrayList();
		
	    try {	    	
	    	
	  		rs = stmt.executeQuery(query);	

	  		Datainfo info = new Datainfo();
	  		info.setId(rs.getInt("id"));
	  		info.setName(rs.getString("name"));
	  		info.setBook_code(rs.getString("book_code"));
	  		
	  		data.add(info);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	    
	    return data;
	}	
}

 

※ 위 코드부분 ArrayList data가 아닌 ArrayList<Datainfo> data = new ArrayList<Datainfo>(); 입니다.

ArrayList 가 사용된 부분은 모두 수정해주세요.

 

 

- Datainfo Class

public class Datainfo {
	
	private int id;
	private String name;
	private String book_code;
	
	
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getBook_code() {
		return book_code;
	}
	
	public void setBook_code(String book_code) {
		this.book_code = book_code;
	}
}

 

- window Class

public class window {

	public static void main(String[] args) {

		SQLlite3 db = new SQLlite3();
		
		if (db.dbConnect() == true) {
			db.setQuery("INSERT INTO `index` ('id', 'name', 'book_code') VALUES (NULL, '해리포터와 혼혈왕자', 'KOR0001')");
			
			ArrayList data = db.getSearchQuery("SELECT * FROM `index` WHERE name = '해리포터와 혼혈왕자'");
			System.out.println(data.get(0).getName() + " / " + data.get(0).getBook_code());
		}
		
	}

}

Window 클래스 main 함수에서는 SQLlite3 객체를 생성하여, 데이터베이스에 연결합니다.

성공한경우, setQuery 메소드 를 통해 데이터베이스에 값을 INSERT 하고,

getSearchQuery 메소드 를 통해 해당 레코드의 값을 추출하여 List 에 데이터를 담습니다.

그리고, 해당 List 에 있는 값을 추출하여 출력합니다.

 

※ 위 코드부분 ArrayList data가 아닌 ArrayList<Datainfo> data 입니다.

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

JOptionPane 클래스  (0) 2013.08.31
JFileChooser 클래스  (0) 2013.08.31
Swing LookAndFeel  (0) 2013.08.31
JAVA SQLLite3 사용하기 (2)  (0) 2013.08.31
JAVA SQLLite3 사용하기 (1)  (0) 2013.08.31