자바로 SQLite에서 SQL 사용하기
- 동영상 강의
- contacts 테이블에 Insert/Update/Delete 하기 1
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package kr.ac.jj.japanteam;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class J002_SqliteInsertUpdateDelte1st {public static void main(String[] args) {// TODO Auto-generated method stubString DBFileName = "d:\\addr.db";Connection conn = null;PreparedStatement ps = null;try {Class.forName("org.sqlite.JDBC");conn = DriverManager.getConnection("jdbc:sqlite:" + DBFileName);} catch (Exception e) {e.printStackTrace();}String sql = "INSERT INTO contact(name, phone, addr, post) VALUES('홍길동', '010-1111-1111', '전라북도 전주시', '51111');";// String sql = "UPDATE contact SET phone='010-5555-5555' WHERE name='길동이';";// String sql = "DELETE FROM contact WHERE name='홍길동';";try {ps = conn.prepareStatement(sql);int r = ps.executeUpdate();if(r > 0) {System.out.println("저장/수정/삭제 성공");}else {System.out.println("저장/수정/삭제 실패");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} - contacts 테이블에 Select 하기 1
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152package kr.ac.jj.japanteam;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class J002_SqliteSelect1st {public static void main(String[] args) {// TODO Auto-generated method stubString DBFileName = "d:\\addr.db";Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {Class.forName("org.sqlite.JDBC");conn = DriverManager.getConnection("jdbc:sqlite:" + DBFileName);} catch (Exception e) {e.printStackTrace();}String sql = "SELECT * FROM contact;";try {ps = conn.prepareStatement(sql);rs = ps.executeQuery();while(rs.next()) {String name = rs.getString("name");String phone = rs.getString("phone");String addr = rs.getString("addr");String post = rs.getString("post");//int speed = rs.getInt("speed");System.out.println(name + "\t" + phone + "\t" + addr + "\t" + post);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} - contacts 테이블에 Insert/Update/Delete 하기 2
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162package kr.ac.jj.japanteam;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class J002_SqliteInsertUpdateDelte2nd {public static void main(String[] args) {// TODO Auto-generated method stubString DBFileName = "d:\\addr.db";Connection conn = null;PreparedStatement ps = null;try {Class.forName("org.sqlite.JDBC");conn = DriverManager.getConnection("jdbc:sqlite:" + DBFileName);} catch (Exception e) {e.printStackTrace();}String sql = "INSERT INTO contact(name, phone, addr, post) VALUES(?,?,?,?);";// String sql = "UPDATE contact SET phone=? WHERE name=?;";// String sql = "DELETE FROM contact WHERE name=?;";try {ps = conn.prepareStatement(sql);//Insert 경우ps.setString(1, "홍길동");ps.setString(2, "010-1111-1111");ps.setString(3, "전라북도 전주시");ps.setString(4, "51111");//ps.setInt(5, 3); //정수값을 넣을때는 setInt() 사용//Update 경우//ps.setString(1, "010-5555-5555");//ps.setString(2, "홍길동");//Delete 경우//ps.setString(1, "홍길동");int r = ps.executeUpdate();if(r > 0) {System.out.println("저장/수정/삭제 성공");}else {System.out.println("저장/수정/삭제 실패");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} - contacts 테이블에 Select 하기 2
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package kr.ac.jj.japanteam;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class J002_SqliteSelect2nd {public static void main(String[] args) {// TODO Auto-generated method stubString DBFileName = "d:\\addr.db";Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {Class.forName("org.sqlite.JDBC");conn = DriverManager.getConnection("jdbc:sqlite:" + DBFileName);} catch (Exception e) {e.printStackTrace();}String sql = "SELECT * FROM contact WHERE post like ?;";try {ps = conn.prepareStatement(sql);ps.setString(1, "52222");//ps.setInt(2, 10);//?에 정수값이 들어갈때 사용rs = ps.executeQuery();while(rs.next()) {String name = rs.getString("name");String phone = rs.getString("phone");String addr = rs.getString("addr");String post = rs.getString("post");//int speed = rs.getInt("speed"); //테이블의 필드가 integer 형 일때 사용System.out.println(name + "\t" + phone + "\t" + addr + "\t" + post);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} - DataAccessObject 클래스로 재구성
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198package kr.ac.jj.japanteam;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class J002_SqliteTotal {public static void main(String[] args) {// TODO Auto-generated method stubDataAccessObject dao = new DataAccessObject();dao.select();dao.insert("홍길동", "010-1111-1111","전라북도 전주시", "51111");dao.select();dao.update("홍길동", "010-5555-5555");dao.select();dao.delete("길동이");dao.select_post("51111");}}class DataAccessObject {String DBFileName = "d:\\addr.db";public Connection getConn() {Connection conn = null;try {Class.forName("org.sqlite.JDBC");conn = DriverManager.getConnection("jdbc:sqlite:" + DBFileName);} catch (Exception e) {e.printStackTrace();}return conn;}public boolean insert(String name, String phone, String addr, String post) {String sql = "INSERT INTO contact(name, phone, addr, post) VALUES(?,?,?,?);";Connection conn = null;PreparedStatement ps = null;int r = 0;try {conn = getConn();ps = conn.prepareStatement(sql);ps.setString(1, name);ps.setString(2, phone);ps.setString(3, addr);ps.setString(4, post);//ps.setInt(5, 3); //?에 정수값을 넣을때는 setInt() 사용r = ps.executeUpdate();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(r > 0) return true;else return false;}public boolean update(String name, String phone) {String sql = "UPDATE contact SET phone=? WHERE name=?;";Connection conn = null;PreparedStatement ps = null;int r = 0;try {conn = getConn();ps = conn.prepareStatement(sql);ps.setString(1, phone);ps.setString(2, name);//ps.setInt(5, 3); //?에 정수값을 넣을때는 setInt() 사용r = ps.executeUpdate();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(r > 0) return true;else return false;}public boolean delete(String name) {String sql = "DELETE FROM contact WHERE name=?;";Connection conn = null;PreparedStatement ps = null;int r = 0;try {conn = getConn();ps = conn.prepareStatement(sql);ps.setString(1, name);//ps.setInt(5, 3); //?에 정수값을 넣을때는 setInt() 사용r = ps.executeUpdate();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(r > 0) return true;else return false;}public void select() {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;String sql = "SELECT * FROM contact;";try {conn = getConn();ps = conn.prepareStatement(sql);//ps.setInt(2, 10);//?에 정수값이 들어갈때 사용rs = ps.executeQuery();while(rs.next()) {String name = rs.getString("name");String phone = rs.getString("phone");String addr = rs.getString("addr");String post2 = rs.getString("post");//int speed = rs.getInt("speed"); //테이블의 필드가 integer 형 일때 사용System.out.println(name + "\t" + phone + "\t" + addr + "\t" + post2);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void select_post(String post) {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;String sql = "SELECT * FROM contact WHERE post like ?;";try {conn = getConn();ps = conn.prepareStatement(sql);ps.setString(1, post);//ps.setInt(2, 10);//?에 정수값이 들어갈때 사용rs = ps.executeQuery();while(rs.next()) {String name = rs.getString("name");String phone = rs.getString("phone");String addr = rs.getString("addr");String post2 = rs.getString("post");//int speed = rs.getInt("speed"); //테이블의 필드가 integer 형 일때 사용System.out.println(name + "\t" + phone + "\t" + addr + "\t" + post2);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} - 과제 1 : 위 6번을 완성해서 제출하시오.
- 과제 2 : student 테이블을 이용해서 위 6번과 같은 코드를 완성하시오.