Scroll indicator done
728x90

table 생성

# 데이터베이스 자료형

# 기본 SQL 문법 및 실습

output >

select : record set 

insert, delete, update : int 

    update -> 몇 행이 영향을 받았는지 결과값으로

 

Create

CREATE TABLE member (
id INT NOT NULL Primary Key,
username VARCHAR(20),
dept VARCHAR(7),
birth DATE,
email VARCHAR(40)
);

Alter

ALTER TABLE member add (tel varchar(30) NOT NULL);
ALTER TABLE member modify username varchar(10);
ALTER TABLE member DROP PRIMARY KEY;

Drop

DROP TABLE member ;

Insert

INSERT INTO member values(201303,‘강기동’,’정보기술’,’1992-10-23’,’mm@mm.net’)
// 테이블에 정의되어 있는 칼럼 순서대로 모든 칼럼 데이터가 들어가야 한다.
INSERT INTO member(id,dept,username) values(201304,’정보기술’,’강기동2’);
// 지정된 필드의 순서에 따라 데이터가 들어간다.

Select

SELECT * FROM member;
SELECT * FROM member WHERE id = 201301;
SELECT id, username, birth FROM member WHERE id = 201301 AND
username=‘홍길동’;

Update

UPDATE member SET id = 201306, username=“이쁜이” WHERE id = 201301;

 

# JDBC 개념과 역할

JDBC - Java Database Connectivity

- 자바 프로그램에서 서로 다른 데이터베이스를 표준화한 방법으로 접속할 수 있도록 만든 api 규격

 

# JDBC 프로그래밍

1. JDBC 드라이버 로딩

Class.forName("com.mysql.jdbc.Driver");

 

2. 데이터베이스 연결

- DriverManager 클래스의 getConnection() 메서드를 이용

JDBC URL : jdbc:<하위 프로토콜>:<데이터 원본 식별자>

MySQL : jdbc:mysql:// IP주소/스키마:PORT(옵션)

- Connection 클래스 인스턴스 레퍼런스 얻기

Connection conn = DriverManager.getConnection(JDBC_URL,“아이디”,”비밀번호”);

 

3. Statement 생성

- executeQuery(), executeUpdate()

Statement stmt = conn.createStatement();
Stmt.executeUpdate(“insert into test values
(‘ “+request.getParameter(“username”)+” 
‘,’”+request.getParameter
(“email”)+” ‘)”);

- PreparedStatement 는 SQL 에 필요한 변수 데이터를 “?”로 표시하고 메서드를 통해 설정하는 방식

PreparedStatement pstmt = conn.prepareStatement(“insert into test 
values(?,?)”);
pstmt.setString(1,request.getParameter(“username”);
pstmt.setString(2,request.getParameter(“email”);
pstmt.executeUpdate();

- 사용한 JDBC 리소스 반납

stmt.close();
pstmt.close();

 

4. SQL 문 전송

- insert, delete, update와 같이 데이터 변경이 있는 쿼리의 경우 executeUpdate() 문을 사용

pstmt.executeUpdate();
int count = pstmt.executeUpdate(); // 처리한 로우의 개수 반환

- select 문의 경우 executeQuery() 메서드를 사용하고 조회 결과를 받기 위해 ResultSet 객체를 사용

 

5. 결과 받기

- 데이터베이스에서 조회한 결과를 받기 위해서는 Statement 나 PreparedStatement 의 executeQuery()를
사용

 

6. 연결 해제

- conn.close()

 

[실습] MySQL 연동 JSP 프로그래밍

- jdbctest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<% request.setCharacterEncoding("utf-8"); %>

<%
	// 데이터베이스 연결관련 변수 선언
	Connection conn = null;
	PreparedStatement pstmt = null;

	// 데이터베이스 연결관련정보를 문자열로 선언
	String jdbc_driver = "com.mysql.jdbc.Driver";
	String jdbc_url = "jdbc:mysql://127.0.0.1/jspdb";
	
	try{
		// JDBC 드라이버 로드
		Class.forName(jdbc_driver);

		// 데이터베이스 연결정보를 이용해 Connection 인스턴스 확보
		conn = DriverManager.getConnection(jdbc_url,"jspbook","******");

		// Connection 클래스의 인스턴스로 부터 SQL  문 작성을 위한 Statement 준비
		String sql = "insert into jdbc_test values(?,?)";
		pstmt = conn.prepareStatement(sql);
		pstmt.setString(1,request.getParameter("username"));
		pstmt.setString(2,request.getParameter("email"));

		// username 값을 입력한 경우 sql 문장을 수행.
		if(request.getParameter("username") != null) {
			pstmt.executeUpdate();
		}
	}
	catch(Exception e) {
		System.out.println(e);
	}
%>
<HTML>
<HEAD><TITLE>ch08 : JDBC 테스트 </TITLE></HEAD>
<BODY>
<div align="center">
<H2>이벤트 등록</H2>
<HR>

<form name=form1 method=post action=jdbctest.jsp>
등록이름 : <input type=text name=username>
email주소 : <input type=text name=email size=20>
<input type=submit value="등록">
</form>
<HR>
</div>
# 등록 목록<P>
<%
	try{
		// select 문장을 문자열 형태로 구성한다.
		String sql = "select username, email from jdbc_test";

		pstmt = conn.prepareStatement(sql);

		// select 를 수행하면 데이터정보가 ResultSet 클래스의 인스턴스로 리턴됨.
		ResultSet rs = pstmt.executeQuery();
		int i=1;

		// 마지막 데이터까지 반복함.
		while(rs.next()) {
			out.println(i+" : "+rs.getString(1)+" , "+rs.getString("email")+"<BR>");
			i++;
		}

		// 사용한 자원의 반납.
		rs.close();
		pstmt.close();
		conn.close();
	}
	catch(Exception e) {
		System.out.println(e);
	}
%>
</BODY>
</HTML>

 

jdbc_test

 

## 시험

~JDBC 까지 

26일 오후 3시

카메라 ON (얼굴 + 화면)

멀티 로그인 허용 (홍길동의 PC)

체험학습?  주소록 프로그램  충분히 이해 .

소스 압축 캡쳐

 

 

728x90