[자바] 도서관리 #3 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 테이블 생성
- BookManage.java 소스
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121package kr.co.moak.summer2019;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.ArrayList;import java.util.Vector;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;public class BookManage extends JFrame implements ActionListener, MouseListener {JTextField tfTitle;JTextField tfPric;JTextField tfPubl;DefaultTableModel model;JTable table;public BookManage() {this.setTitle("도서관리");this.setLayout(null);this.setResizable(false);this.setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(800, 600);JPanel panList = new JPanel();panList.setBounds(10, 10, 390, 550);panList.setBackground(Color.PINK);panList.setLayout(null);this.add(panList);// List 부분 소스 추가JPanel panRight = new JPanel();panRight.setBounds(410, 10, 380, 550);panRight.setBackground(Color.GREEN);panRight.setLayout(null);this.add(panRight);// Insert 부분 소스 추가this.setVisible(true);}public static void main(String[] args) {// TODO Auto-generated method stubnew BookManage();}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubBookDAO dao = null;switch(e.getActionCommand()) {case "저장":String name = tfTitle.getText();int pric = Integer.parseInt(tfPric.getText());String dept = tfPubl.getText();BookDTO dto = new BookDTO(name, pric, dept);dao = new BookDAO();dao.insert(dto);tfTitle.setText("");tfPric.setText("");tfPubl.setText("");model.setDataVector(dao.getListVector(), dao.getTableHeader());break;}}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stubint _id = Integer.parseInt(table.getValueAt(table.getSelectedRow(), 0).toString());BookDAO dao = new BookDAO();BookDTO dto = dao.getBookDTO(_id);tfTitle.setText(dto.getTitle());tfPric.setText(dto.getPric() + "");tfPubl.setText(dto.getPubl());}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}} - BookDTO.java 소스 : _id 추가 후 getter/setter 추가
1234567891011121314151617181920212223242526package kr.co.moak.summer2019;public class BookDTO {int _id;String title;int pric;String publ;public BookDTO() {}public BookDTO(String title, int pric, String publ) {this.title = title;this.pric = pric;this.publ = publ;}public int get_id() {return _id;}public void set_id(int _id) {this._id = _id;}// 기존의 Getter/Setter 이곳에 추가} - BookDAO.java 소스 : 메서드 1개(getBookDTO(int _id)) 추가 <- getListVector()를 활용해서 생성
123456789101112131415161718192021222324252627282930313233343536373839404142434445package kr.co.moak.summer2019;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;public class BookDAO {String tableName = "tbook";////////// 기존 소스 코드 ////////////public BookDTO getBookDTO(int _id) {// 소스 추가}/** 도서목록 출력 */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장)
- 교수참조 : 구글 드라이브의 내가만든 소스코드에 Summer2019_20190627.zip 파일 올려놨음