카테고리 없음
123
원2
2021. 4. 9. 16:18
728x90
반응형
오라클 코드
create table student(
sno number primary key,
name varchar2(20),
major varchar2(50),
gender varchar2(5));
insert into student values(1,'LEE','AA','a');
insert into student values(2,'LET','BB','a');
insert into student values(3,'LED','CC','a');
insert into student values(4,'LEA','DD','a');
insert into student values(5,'LEB','EE','a');
select * from student;
commit;
package jdbcPro1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.Scanner;
public class ConnTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("명령 입력:1:select, 2:inset, 3:update, 4:delete , 5:exit");
int n = sc.nextInt();
DAOPro dao = DAOPro.getInstance(); // dao를 얻어옴
switch (n) {
case 1:
List<Student> list = dao.select();
for (int i = 0; i < list.size(); ++i) {
System.out.println(list.get(i));
}
break;
case 2:
System.out.print("학번 :"); // print만 쓰면 콜솔창에 커서가 깜빡거리면서 입력이 가능.
int sno = sc.nextInt();
System.out.print("이름 :");
String name = sc.next();
System.out.print("전공 :");
String major = sc.next();
System.out.print("성별 :");
String gender = sc.next();
dao.insert(new Student(sno, name, major, gender)); // insert 에 입력된값을 다시 출력.
break;
case 3:
System.out.print("학번 :"); // print만 쓰면 콜솔창에 커서가 깜빡거리면서 입력이 가능.
sno = sc.nextInt();
Student st = dao.selectOne(sno); // selectOne을 사용해서 수정값을 확인.
System.out.println(st);
System.out.print("이름 :");
name = sc.next();
System.out.print("전공 :");
major = sc.next();
System.out.print("성별 :");
gender = sc.next();
dao.update(new Student(sno, name, major, gender));
break;
case 4:
System.out.println("학번 : ");
sno = sc.nextInt();
dao.delete(sno);
break;
default:
break;
}
if (n == 5)
break;
}
}
}
package jdbcPro1;
public class Student {
private int sno;
private String name;
private String major;
private String gender;
public Student() { // 디폴트 생성자
}
public Student(int sno, String name, String major, String gender) {
super();
this.sno = sno;
this.name = name;
this.major = major;
this.gender = gender;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Student [sno= " + sno + ", name= " + name + ", major= " + major + ", gender= " + gender + "]";
}
public static void main(String[] args) {
}
}
package jdbcPro1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class DAOPro {
private DAOPro() {
}
private static DAOPro dao = new DAOPro();
public static DAOPro getInstance() {
return dao;
}
private Connection getConnection() {
String driverName = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "LWY";
String pw = "qqqq";
Connection conn = null;
try {
Class.forName(driverName);
System.out.println("드라이브 로드 성공");
conn = DriverManager.getConnection(url, user, pw);
System.out.println("DB접속 성공");
} catch (ClassNotFoundException e) {
System.out.println("드라이브 로드 실패");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("db접속 오류");
e.printStackTrace();
}
return conn;
} // DB와 연결하기 위한 코드
public Student selectOne(int sno) { // 수정 내용을 한번 확인 하고 싶을 때 쓸 Method
Connection conn = null; // sno를 가져온이유는 프라이머리 key 이기 때문에
PreparedStatement ps = null;
ResultSet rs = null;
Student student = null;
// 여기서 값을 정하지 않은 이유는 selectOne Method 는student의 하나의
// 확인용이고 하나의 값을 가져오기 위해서
String sql = "select * from student where sno=?";
try {
conn = getConnection(); // conn안에 getConnection을 집어놓고
ps = conn.prepareStatement(sql);
ps.setInt(1, sno);
rs = ps.executeQuery(); // 쿼리문들 받아옴.
if (rs.next()) { // 여기서는 한번만 확인을 할거기 때문에
student = new Student(); // Student객체를 만들어주고 인스턴스 변수이기때문에
student.setSno(rs.getInt("sno")); // 가져올 부분을 선택.
student.setName(rs.getString("name"));
student.setMajor(rs.getString("major"));
student.setGender(rs.getString("gender"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
db_close(conn, ps, rs); // 닫아주는것.
}
return student; // 다되면 리턴값으로 가져감 여기서는 student 하나만 가져갈거임
}
public void delete(int sno) {
Connection conn = null;
PreparedStatement ps = null;
String sql = "delete from student where sno=?";
// 쿼리문 그리고 =? 는 정확하게 값을 입력 하지 않겠따.
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
ps.setInt(1, sno);
int n = ps.executeUpdate();
if (n == 1)
System.out.println("삭제 성공");
else
System.out.println("삭제 실패");
} catch (Exception e) {
e.printStackTrace();
} finally {
db_close(conn, ps);
}
}
public void update(Student student) { // update Method
Connection conn = null;
PreparedStatement ps = null;
String sql = "update student set name=?, major=?, gender=? where sno=?";
// 업데이트문 값만 들어오면 된다. sql문이라서 오타가 나면 안된다 여기는, 문자열이 아닌 sql쿼리문임.
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
ps.setString(1, student.getName());
ps.setString(2, student.getMajor());
ps.setString(3, student.getGender());
ps.setInt(4, student.getSno());
int n = ps.executeUpdate();
if (n == 1) {
System.out.println("update 성공");
} else {
System.out.println("update 실패");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
db_close(conn, ps);
}
}
public void insert(Student student) { // 입력 함수
Connection conn = null;
PreparedStatement ps = null;
String sql = "insert into student values(?,?,?,?)";
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
ps.setInt(1, student.getSno());
ps.setString(2, student.getName());
ps.setString(3, student.getMajor());
ps.setString(4, student.getGender());
int n = ps.executeUpdate();
if (n == 1) {
System.out.println("데이터 입력 성공");
} else {
System.out.println("데이터 입력 실패");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
db_close(conn, ps);
}
}
public List<Student> select() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
List<Student> list = new ArrayList<>(); // 리스트 객체를 생성한다.ㄴ
String sql = "select * from student";
try {
conn = getConnection(); // conn안에 getConnection을 집어놓고
stmt = conn.createStatement();
rs = stmt.executeQuery(sql); // 쿼리문들 받아옴.
while (rs.next()) { // 쿼리문을 읽어올거다. while은 객체가 있는 동안 실행이고
Student s = new Student(); // Student객체를 만들어주고 인스턴스 변수이기때문에
s.setSno(rs.getInt("sno")); // 가져올 부분을 선택.
s.setName(rs.getString("name"));
s.setMajor(rs.getString("major"));
s.setGender(rs.getString("gender"));
list.add(s);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
db_close(conn, stmt, rs); // 닫아주는것.
}
return list; // 다되면 리턴값으로 가져감
}
private void db_close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (conn != null)
conn.close();
if (stmt != null)
stmt.close();
if (rs != null)
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void db_close(Connection conn, Statement stmt) {
try {
if (conn != null)
conn.close();
if (stmt != null)
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
728x90
반응형