IT/DB / / 2023. 4. 18. 17:56

DB - JAVA와 DB를 연동하여 프로그래밍하기 - insert

반응형
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();
		}
	}
}
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유