[자바] 도서관리 #2 Book 목록(Sqlite 사용)
- 참고 자료
- 자바에서 Sqlite 사용하기
- Sqlite DB에 값을 저장(INSERT)하는 자바 코딩
- Sqlite DB에 값을 수정(UPDATE)하는 자바 코딩
- AddrDAO 클래스 코딩
- 기타 필요한 것은 1차로 이 홈페이지에서 검색
2차로 google에서 검색
- 기본 정보
- 오류가 생겨 해결이 안될 때
- naver, google에서 검색해서 본인 어떻게든 해결
- Run – Debug 메뉴를 통해 1단계씩 실행시키면서 오류 찾기
- Run-Debug 기능이 느리지만 가장 효과적으로 실력이 향상됨
- 그래도 안되면 같은 조원들에게 묻기
- 그래도 안되면 언제든지 단톡에 묻기
- 답을 해줄 수 있는 학생이 답해주고,
- 그래도 안되면 내가 답해주겠음
(단, 컴파일 오류는 알려주지 않음, 실행오류만 묻길 바람)
- naver, google에서 검색해서 본인 어떻게든 해결
- 오류가 생겨 해결이 안될 때
- 실행결과
- mybook.db 생성 : Sqlite 사용
- tbook 테이블 생성
- 테이블의 필드와 DTO의 멤버필드 관계를 엑셀로 정리 : 다운로드
- 1차적으로 아래 소스 코드를 실행시켜보고 완성이 되면
우리학교 도서관 홈페이지를 참조하여 필드 추가 및 UI 추가 구성
- tbook 테이블 생성
- ListForm.java 소스
1234567891011121314151617181920212223242526272829303132333435363738package kr.co.moak.summer2019;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;public class ListForm extends JFrame{DefaultTableModel model;JTable table;public ListForm() {this.setTitle("도서목록");this.setLayout(null);this.setResizable(false);this.setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(800, 600);BookDAO dao = new BookDAO();Vector<Object> vecs = dao.getListVector();Vector<Object> cols = dao.getTableHeader();model = new DefaultTableModel(vecs, cols); // model.setDataVector(vecs, cols);table = new JTable(model);JScrollPane scroll = new JScrollPane(table);scroll.setBounds(10, 10, 770, 500);this.add(scroll);this.setVisible(true);}public static void main(String[] args) {// TODO Auto-generated method stubnew ListForm();}} - BookDTO.java 소스 : 변화 없이 그대로 사용
- BookDAO.java 소스 : 2개 메서드 추가
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package kr.co.moak.summer2019;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;public class BookDAO {String tableName = "tbook";////////// 기존 소스 코드 /////////////** 테이블의 캡션 출력 */public Vector<Object> getTableHeader() {Vector<Object> col = new Vector<Object>();col.add("_id");col.add("제목");col.add("가격");col.add("출판사");return col;}/** 도서목록 출력 */public Vector<Object> getListVector() {Vector<Object> data = new Vector<Object>();Connection con = null; // 연결PreparedStatement ps = null; // 명령ResultSet rs = null; // 결과try {con = getConn();String sql = "select * from" + tableName + "order by title asc;";ps = con.prepareStatement(sql);rs = ps.executeQuery();while (rs.next()) {Vector<String> row = new Vector<String>();row.add(rs.getInt("_id")); //이곳에서 오류발생 : 해결방법은?, 왜 생기는지?row.add(rs.getString("title"));row.add(rs.getString("pric"));row.add(rs.getString("publ"));data.add(row);} // while} catch (Exception e) {e.printStackTrace();}return data;}// getListVector()}- 위 코드에는 오류가 2군데 있음, 고쳐서 사용하세요.
- Vector 자료형에 대해서 조사해 보세요(자바 교재 7장)
- 위 5번 소스 코드에서 오류가 발생하면
model = new DefaultTableModel(vecs, cols); <– 오류 발생(JDK 1.8 이상 버전에서 발생)
1234BookDAO dao = new BookDAO();Object[][] vecs = dao.getListArray();Object[] cols = dao.getTableHeaderArray();model = new DefaultTableModel(vecs, cols);
- BookDAO.java 에 새로운 메소드 추가
12345678910111213141516171819202122232425262728293031323334353637383940414243public Object[] getTableHeaderArray() {Object[] cols = new Object[3];cols[0] ="도서명";cols[1] = "가격";cols[2] = "출판사";return cols;}public Object[][] getListArray() {ArrayList<Object[]> arList = new ArrayList<>();Connection con = getConn();String sql = "SELECT * FROM tbook ORDER BY title ASC;";PreparedStatement ps;ResultSet rs;try {ps = con.prepareStatement(sql);rs = ps.executeQuery();while (rs.next()) {Object[] row = new Object[3];row[0] = rs.getString("title");row[1] = rs.getInt("pric");row[2] = rs.getString("publ");arList.add(row);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Object[][] table = new Object[arList.size()][];for(int i=0; i<arList.size(); i++) {table[i] = new Object[3];for(int j=0; j<3; j++) {table[i][j] = arList.get(i)[j];}}return table;}
- 교수참조 : 구글 드라이브의 내가만든 소스코드에 자바_Summer2019_20190627.zip 파일 올려놨음
- 교수참조 : [][] 사용 방법은 구글 드라이브의 내가만든 소스코드에 자바_Winter2019_20191230.zip 파일 올려놨음