JDBC
JDBC라는 것은 각 벤더 (MS SQL, Oracle Oracle, IBM DB2등) 들마다 각기 다른 드라이버를 제공해서 운영체제나 응용프로그램에서 자신의 데이터베이스에 연결시키는데 각각이 어떻게 보면 하나의제품으로 구분 될 수 있다. 여기서는 Oracle을 사용하는데 Oracle에서 제공해 주는 드라이버를 자바 프로그래밍을 통해 Oracle 즉, Database를 접근하고 처리하는 방법을 알아본다.
우선 오라클 10 설치후 http://localhost:1158/em 로 들어가준뒤 sys로 로그린후 관리탭으로 들어간후 사용자를 들어가서 생성



test가 생성되었는지 확인후





ojdbc14.jar를 복사해서 C:\Program Files\Java\jdk-12.0.1\lib에 붙여넣어준다. 그이후 내컴퓨터 우클릭 속성에 들어가서 환경변수설정을 해준다.



CMD로 오라클 접속후

test에게 권한 부여!



테이블을 생성해준뒤 자바프로젝트를 만들고 자바프로젝트 우클릭해서 .properties를 클릭한다

그이후 java build path를 선택하고 Libraries를 클릭해서 Classpath를 선택하고

Add External JARs...을 눌러준다



이렇게 설정을 해준뒤 class를 만들어주고 코드작성
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JDBC3 {
public static void main(String[] args) {
Connection con = null;
Statement st = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:root","test","rootoor");
String sql = "insert into test_T values('자바씨', '34')";
st = con.createStatement();
st.executeUpdate(sql);
System.out.println("입력 성공");
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (st !=null) {
st.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
}
}
}
}

CMD로 sqlplus점속해서 확인이 가능하다

데이터 확인 코드
package jdbc;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class JDBC1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:root";
String user ="test";
String pwd ="rootoor";
Connection con = DriverManager.getConnection(url, user, pwd);
// Statement Statement, PreparedStatement, CallableStatement;
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from test_T");
while (rs.next()) {
System.out.println(rs.getString("name")+"/"+rs.getInt("age"));
}
rs.close();
st.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

데이터 저장하는 코드!
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JDBC4 {
public static void main(String[] args)
throws Exception{
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:root", "test","rootoor");
PreparedStatement pstmt = con.prepareStatement("insert into test_T(age, name) values(?, ?)");
String name = "파이썬양";
String age = "23";
pstmt.setString(1, age);
pstmt.setString(2, name);
int cnt = pstmt.executeUpdate();
if (cnt > 0) {
System.out.println("저장완료");
}
if (pstmt != null) {
pstmt.close();
}
}
}

외부에서 데이터를 받아서 저장 하는 코드
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
public class JDBC5 {
public static void main(String[] args)throws Exception{
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:root", "test","rootoor");
PreparedStatement pstmt = con.prepareStatement("insert into test_T(age, name) values(?, ?)");
while (true) {
System.out.print("이름을 입력하세요: ");
Scanner sc = new Scanner(System.in);
String name = sc.next();
System.out.print("나이를 입력하세요: ");
String age =sc.next();
pstmt.setString(1, age);
pstmt.setString(2, name);
int cnt = pstmt.executeUpdate();
if (cnt > 0) {
System.out.println("저장 완료");
System.out.print("종료하시겠습니까? y/n:");
String select = sc.next();
if (select.equalsIgnoreCase("y")) {
if (pstmt != null)
pstmt.close();
if (con != null)
con.close();
break;
}else if (select.equalsIgnoreCase("n")) {
continue;
}
}
}
}
}

데이터 지우는 코드
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class JDBC7 {
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:root", "test", "rootoor");
// 이름을 검색하기 위한 쿼리
PreparedStatement pstmt = con.prepareStatement("select * from test_T where name=?");
// 검색한 이름으로 비밀번호(여기서는 나이) 일치여부를 판단한 후 삭제하는 쿼리
PreparedStatement pstmt2 = con.prepareStatement("delete from test_t where name=? and age=?");
while (true) {
System.out.print("삭제할 이름 : ");
Scanner sc = new Scanner(System.in);
String name = sc.next();
pstmt.setString(1, name);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
// rs.next()를 통해 입력받은 이름이 있는지 db 검사
System.out.print(name + "의 나이 : ");
String age = sc.next();
pstmt2.setString(1, name);
pstmt2.setString(2, age);
int cnt = pstmt2.executeUpdate();
if (cnt > 0) {
System.out.println(name + " 삭제성공!!");
} else {
System.out.println("나이가 일치하지 않음");
}
} else {
System.out.println("해당 이름이 없습니다.");
}
System.out.print("종료하시겠습니까? y | n : ");
String select = sc.next();
if (select.equalsIgnoreCase("y")) { // 종료 할 경우
if (pstmt != null)
pstmt.close();
if (pstmt2 != null)
pstmt2.close();
if (con != null)
con.close();
break;
} else if (select.equalsIgnoreCase("n")) { // 계속인 경우
continue;
}
}
}
}

데이터 수정 코드
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
public class JDBC7 {
public static void main(String[] args) throws Exception{
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:root", "test", "rootoor");
PreparedStatement pstmt = con.prepareStatement("update test_T set age =? where name=?");
//"update test_T set id =?, pwd=? where name=?"
while (true) {
System.out.print("이름을 입력하세요 : ");
Scanner sc = new Scanner(System.in);
String name = sc.next();
System.out.print("수정할 나이 : ");
String age = sc.next();
pstmt.setString(1, age);
pstmt.setString(2, name);
int n = pstmt.executeUpdate();
if (n>0) {
System.out.println("수정 성공");
}else {
System.out.println("수정 실패");
}
System.out.print("종료 하시겠습니까? y/n :");
String select = sc.next();
if (select.equalsIgnoreCase("y")) {
if (pstmt != null)
pstmt.close();
if (con!=null)
con.close();
break;
}else if (select.equalsIgnoreCase("n")) {
continue;
}
}
}
}

'JAVA' 카테고리의 다른 글
| [JAVA] 문제풀이 0810 (0) | 2022.08.10 |
|---|---|
| [JAVA] 문제 풀이 0809 (0) | 2022.08.09 |
| [JAVA] Server Socket 서버 클라이언트 프로그램 만들기 (0) | 2022.08.08 |
| [JAVA] IO < 버퍼>, < byte stream>, <Char stream> (0) | 2022.08.08 |
| [JAVA]file class (0) | 2022.08.08 |
댓글