반응형
package com.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
import javax.swing.JOptionPane;
/**
* 작업 순서
* 1. Driver Loading
* -> 데이터베이스와 연결하는 드라이버 파일을 찾아서 객체를 발생시킨다.
* -> 생성자에서 구현한다.
* 2.Connection
* -> 연결을 관리하는 Connection 객체를 생성한다.
* 3.SQL작업처리
* -> 작업을 처리할 PreparedStatement 객체를 생성한다.
* -> select * from 테이블명;
* -> 테이블에 저장된 모든 데이터를 검색한다.
* 4. 반환되는 결과는 ResultSet 객체에 담는다.
* 5. 접속을 종료한다.
* */
class InsertTest{
public InsertTest(){
try{
//OracleDriver 클래스의 존재유무 검사
//없으면 예외 발생, 즉 등록되어 있지 않으면 예외 발생
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("드라이버 등록 성공");
}catch(ClassNotFoundException e){
System.out.println("드라이버 등록 실패");
e.printStackTrace();
}
}
public Connection getConnection(){
Connection conn = null;
try {
/*
* Oracle과 연동 -(1 : DB URL 2 : DB USER 3 : 패스워드)
* DB URL : SQLDEVELOPER -> 계정 속성 -> 접속세부정보
* */
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe",
"jspexam2","m1234");
System.out.println("접속 성공");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public void insertArticle(){
/*
* 사용자 입력 데이터 초기화 및 입력
* */
Scanner sc = new Scanner(System.in);
System.out.print("이름입력 : ");
String name = sc.next();
System.out.print("나이 입력 : ");
int age = sc.nextInt();
System.out.print("키 입력 : ");
double height = sc.nextDouble();
/*
* default = autocommit
* */
//DB
Connection conn = getConnection();//호출
PreparedStatement pstmt = null;
int su = 0;
try{
/*
* prepareStatement : statment의 개선사항
* 미완성된 문장을 데이터값 쓰는 대신 ?로 대치
* ?에 데이터 값을 넣어주고 (데이터 매핑)
* 업데이트 : pstmt.executeUpdate();
* 실행 : pstmt.executeQuery();
* ex) "insert into dbtest values (?, ?, ?, sysdate)";
* Statement : 실행시 SQL문장을 넣어야 한다.
* ex) "insert into dbtest values ('" + name + "', " + age + "," + height + ", sysdate)";
*
* */
String sql = "insert into dbtest values (?, ?, ?, sysdate)";
pstmt = conn.prepareStatement(sql); //sql은 pstmt가 관리함
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setDouble(3, height);
su = pstmt.executeUpdate(); // 처리된 작업의 개수가 리턴됨
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
if(sc != null) sc.close();
}catch(SQLException e){
e.printStackTrace();
}
}
System.out.print(su + "개 행이 만들어 졌습니다.");
}
}
public class Exam2 {
public static void main(String[] args) {
tictok t = new tictok();
t.setDaemon(true);
t.start();
InsertTest it = new InsertTest();
it.insertArticle();
System.out.println("\n"+t.time + "초 경과");
}
결과 창
DB내에 INSERT된것을 확인할 수 있다.
//ps. 초 경과하는 class 참조
class tictok extends Thread{
float time = 0;
public void run(){
try{
while(true){
time += 0.1;
sleep(100);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
반응형
'IT > DB' 카테고리의 다른 글
DB - JAVA와 DB를 연동하여 프로그래밍하기 - update (0) | 2023.04.18 |
---|---|
DB - JAVA와 DB를 연동하여 프로그래밍하기 - select (0) | 2023.04.18 |
DB - JDBC 다루기 (0) | 2023.04.18 |
DB - Transaction(트랜잭션) (0) | 2023.04.18 |
DB - sqldeveloper에서 db사용하기 (0) | 2023.04.18 |