티스토리 뷰

//JDBC(Java data base connectivity)
프로그램 순서 7단계
 
01단계 :드라이버 로딩(mysql 드라이버 로딩)
02단계 :Connection객체로 DB연결
1)ip 2)port번호 3)db접속id 4)db접속비번 5)db(sid,service name)
 
03단계 :Query실행을 위한 준비
( statement 또는 PreparedStatement객체생성)
 
04단계 :Query실행
 
05단계 :Query실행결과 사용
(insert,update,delete의 경우 생략 가능단계)
 
06단계 :statement 또는 PreparedStatement객체 종료(close())
07단계 :DB연결(Connection 객체) 종료(close())

 

1단계 mysql 드라이버 로딩

 

 

2단계 DB연결

		String jdbcDriver = "jdbc:mysql://localhost:3306/dev41db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev41id";
		String dbPass = "dev41pw";

DB명 : dev41db

dbid : dev41id

dvpw : dev41pw

conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);

드라이버매니저 클래스 내에 getConnection 메서드는 String 타입으로 3개의 변수를 입력받았다.

입력받는 값은 3개(1. String url 2. String user 3. String password) 이지만,

DBMS 종류, MYSQL, IP, PORT 번호, DB명, DBID, DBPW 를 판단 후

정상이면 생성된 객체의 주소값을 리턴하고 아니면 에러가  발생한다.

 

 

3단계 쿼리실행준비

테이블에 정상적으로 인서트되었다.

아래의 코드는 DBMS에서 쿼리실행결과를 확인하고 가져온다.

pstmt = conn.prepareStatement(
				"INSERT INTO tb_member VALUES (?, ?, ?, ?, ?)");

conn 객체참조변수에 할당된 주소를 찾아가서 pprepareStatement 메서드를 호출하면

insert 쿼리문장을 매개변수에 입력후 메서드가 실행된다.

preapredStatement 를 통해 생성된 객체의주소값을 pstmt 객체참조변수에 할당한다.

 

	pstmt.setString(1, m_id);
		pstmt.setString(2, m_pw);
		pstmt.setString(3, m_level);
		pstmt.setString(4, m_name);
		pstmt.setString(5, m_email);

pstmt 객체참조변수를 찾아가서 setString 메서드를 실행한다.

첫번째 위치는 String을 넣어야하고 m_id를 넣는다는 뜻이다.

 

 

4단계 쿼리 실행

int result = pstmt.executeUpdate();

pstmt 객체참조변수를 찾아가서 executeUpdate() 메서드를 실행한다.

executeUpdate() 메서드는 변경하는 명령어로 create, drop,insert, delete, update 가 있다.

수행결과로 int 타입의 값을 반환한다.

 

1111 ~ 5555 의 값을 입력해주었다.

 

실행결과 콘솔창 :

11111<-- m_id /minsert/m_insert_pro.jsp
22222<-- m_pw /minsert/m_insert_pro.jsp
33333<-- m_level /minsert/m_insert_pro.jsp
44444<-- m_name /minsert/m_insert_pro.jsp
55555<-- m_email /minsert/m_insert_pro.jsp
com.mysql.jdbc.JDBC4Connection@491592e7<-- conn
class com.mysql.jdbc.JDBC4Connection<-- conn.getClass()
com.mysql.jdbc.JDBC4PreparedStatement@52d7ee0c: insert INTO tb_member VALUES (** NOT SPECIFIED **, ** NOT SPECIFIED **, ** NOT SPECIFIED **, ** NOT SPECIFIED **, ** NOT SPECIFIED **)<-- pstmt 1
class com.mysql.jdbc.JDBC4PreparedStatement<-- pstmt.getClass() 1
com.mysql.jdbc.JDBC4PreparedStatement@52d7ee0c: insert INTO tb_member VALUES ('11111', '22222', '33333', '44444', '55555')<-- pstmt 2
1<-- result

 

 

5단계 쿼리실행결과 활용

 

수행결과로

->INSERT, DELETE, UPDATE 관련 구문에서는 반영된 레코드의 건수를 반환한다.

->CREATE, DROP 관련 구문에서는 -1을 반환한다.

insert 한줄을 반영했으므로 1이 result로 반환되었다.

System.out.println(result + "<-- result");

 

 

6단계 객체를 종료한다.

 

pstmt.close();
conn.close();

pstmt , conn 객체를 종료한다.

 

 

전체코드 : 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.SQLException" %>

<%
	request.setCharacterEncoding("euc-kr");
	Connection conn = null;
	PreparedStatement pstmt = null;
//화면에서 입력자료 받아서 콘솔창에 출력 시작
	String m_id = request.getParameter("m_id");
	String m_pw = request.getParameter("m_pw");
	String m_level = request.getParameter("m_level");
	String m_name = request.getParameter("m_name");
	String m_email = request.getParameter("m_email");
	System.out.println(m_id + "<-- m_id /minsert/m_insert_pro.jsp");
	System.out.println(m_pw + "<-- m_pw /minsert/m_insert_pro.jsp");
	System.out.println(m_level + "<-- m_level /minsert/m_insert_pro.jsp");
	System.out.println(m_name + "<-- m_name /minsert/m_insert_pro.jsp");
	System.out.println(m_email + "<-- m_email /minsert/m_insert_pro.jsp");
//화면에서 입력자료 받아서 콘솔창에 출력 끝	
	//JDBC 프로그램 순서
	//01단계 :드라이버 로딩 시작
	
	//01단계 :드라이버 로딩 끝
	
	try{
//02단계 :DB연결(Connection)시작
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev41db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev41id";
		String dbPass = "dev41pw";
		
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
		//static 
		System.out.println(conn + "<-- conn");
		System.out.println(conn.getClass() + "<-- conn.getClass()");
		
		
//02단계 :DB연결(Connection)끝
//03단계 :Query실행을 위한 statement 또는 prepareStatement객체생성 시작
		pstmt = conn.prepareStatement(
				"insert INTO tb_member VALUES (?, ?, ?, ?, ?)");
		System.out.println(pstmt + "<-- pstmt 1");
		System.out.println(pstmt.getClass() + "<-- pstmt.getClass() 1");
//insert into tb_member values('id001','pw001','관리자','홍01','email01');
		pstmt.setString(1, m_id);
		pstmt.setString(2, m_pw);
		pstmt.setString(3, m_level);
		pstmt.setString(4, m_name);
		pstmt.setString(5, m_email);

		System.out.println(pstmt + "<-- pstmt 2");
		
//03단계 :Query실행을 위한 statement 또는 prepareStatement객체생성 끝
//04단계 :Query실행 시작
		int result = pstmt.executeUpdate();
		System.out.println(result + "<-- result");
//04단계 :Query실행 끝
//05단계 :Query실행결과 사용 (insert의 경우 생략 가능단계)

	}finally{
		//06단계 :statement 또는 prepareStatement객체 종료(close())
		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
		//07단계 :Connection 객체 종료(close())
		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
	}

%>

 

 

 

'41기 개발자과정' 카테고리의 다른 글

20219026 - DML, DDL, DCL  (0) 2021.09.26
20210924 mysql list처리  (0) 2021.09.24
20210924 mysql 접근 오류페이지  (0) 2021.09.24
20210923 - mysql DBMS 구축  (0) 2021.09.23
20210917 jsp-session  (0) 2021.09.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함