5주차 - 자바 오라클 데이터베이스 (2)
2022. 9. 3. 15:44ㆍDataBase/Oracle
CRUD란?
Create
Read
Update
Delete
위의 네가지의 앞자를 따서 CRUD 라고 부른다.
데이터베이스에서 테이블에 값을 추가하는 방법은 아래의 구문과 같다
INSERT INTO 테이블 이름 VALUES(저장할 값);
이때, 저장할 값의 순서는 테이블 생성시에 만든 순서, 자료형이 동일해야한다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class Insert {
public static void main(String[] args) {
String user = "oracle";
String password = "oracle";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
Connection con = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Scanner sc = new Scanner(System.in);
System.out.print("아이디 : "); String id = sc.next();
System.out.print("비밀번호 : "); String pass = sc.next();
System.out.print("이름 : "); String name = sc.next();
String sql = "INSERT INTO test VALUES(test_seq.nextval, ?,?,?)";
PreparedStatement ps = null;
try {
con = DriverManager.getConnection(url, user, password);
ps = con.prepareStatement(sql);
ps.setString(1, id);
ps.setString(2, pass);
ps.setString(3, name);
ps.executeUpdate();// INSERT, UPDATE, DELETE
} catch (SQLException e) {
e.printStackTrace();
}
// 아래는 데이터 베이스와의 연결을 끊어주는 코드
// 연결을 끊지 않으면 메모리를 계속 사용하게되기 때문에 끊어줘야한다.
try {
if(ps != null)
ps.close();
if(con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
아래는 테이블의 값을 가져오는 방법이다.
데이터베이스에서 테이블의 값을 불러오는 구문은 아래와 같다
SELECT * FROM 테이블이름;
*의 위치에는 불러오고자 하는 COLUMN명을 넣으면 해당 컬럼만 가져올수도 있다.
이름 뒤에 WHERE 키워드를 사용하면 조건을 사용 할 수도 있다.
아래는 예시
public class SelectAll {
public static void main(String[] args) {
// 데이터베이스의 모든 정보 출력하기.
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String user = "oracle";
String password = "oracle";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
Connection con = null;
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
String sql = "SELECT * FROM test";
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
System.out.println("번호 : " + rs.getInt("num"));
System.out.println("아이디 : " + rs.getString("id"));
System.out.println("비밀번호 : " + rs.getString("password"));
System.out.println("이름 : " + rs.getString("name"));
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs != null)
rs.close();
if(ps != null)
ps.close();
if(con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
아래는 테이블의 값을 업데이트 하는 방법.
구문은 아래와 같다
UPDATE 테이블 이름 SET 컬럼명=값;
업데이트도 WHERE 과 같은 옵션이 있다.
아래는 UPDATE 의 사용 예시
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class Update {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "oracle";
String password= "oracle";
String sql = "SELECT count(id) FROM test WHERE id=?";
Scanner sc = new Scanner(System.in);
System.out.print("아이디 : "); String id = sc.next();
try {
con = DriverManager.getConnection(url, user, password);
ps = con.prepareStatement(sql);
ps.setString(1, id);
rs = ps.executeQuery();
if(rs.next()) {
int row = rs.getInt(1);
if(row == 1) {
System.out.print("비밀번호 : "); String pass = sc.next();
System.out.print("이름 : "); String name = sc.next();
sql = "UPDATE test SET password=?, name=? WHERE id=?";
ps = con.prepareStatement(sql);
ps.setString(1, pass);
ps.setString(2, name);
ps.setString(3, id);
ps.executeUpdate();
}else {
System.out.println(id + "는/은 등록된 정보가 아닙니다.");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs != null)
rs.close();
if(ps != null)
ps.close();
if(con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
마지막으로 DELETE 는 테이블의 값을 삭제한다.
구문은 아래 형식과 같다
DELETE FROM 테이블명;
아래는 사용 예시
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class Delete {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "oracle";
String password= "oracle";
String sql = "SELECT password FROM test WHERE id=?";
Scanner sc = new Scanner(System.in);
System.out.print("아이디 : "); String id = sc.next();
try {
con = DriverManager.getConnection(url, user, password);
ps = con.prepareStatement(sql);
ps.setString(1, id);
System.out.print("비밀번호 : "); String pass = sc.next();
ps.setString(2, pass);
rs = ps.executeQuery();
if(rs.next()) {
String row = rs.getString(1);
if(row.equals(pass)) {
System.out.print("이름 : "); String name = sc.next();
sql = "DELETE FROM test WHERE id=?";
ps = con.prepareStatement(sql);
ps.setString(1, id);
ps.executeUpdate();
}else {
System.out.println(id + "는/은 등록된 정보가 아닙니다.");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs != null)
rs.close();
if(ps != null)
ps.close();
if(con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
'DataBase > Oracle' 카테고리의 다른 글
5주차 - 오라클 데이터베이스 설치 연동 (1) (0) | 2022.09.07 |
---|---|
5주차 - 자바, 데이터베이스 (5) (0) | 2022.09.03 |
5주차 - 자바, 오라클 데이터베이스 (4) (0) | 2022.09.03 |
5주차 - 자바 오라클 데이터베이스 (3) (0) | 2022.09.03 |
5주차 - 자바 오라클 데이터베이스 (1) (0) | 2022.09.03 |