SSENI's
search
sseni
말하는 감자에서 자라기
Today
Yesterday
[웹서버프로그래밍] 2022.04.19 데이터베이스와 JDBC
# 데이터베이스 자료형
# 기본 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 까지
26일 오후 3시
카메라 ON (얼굴 + 화면)
멀티 로그인 허용 (홍길동의 PC)
체험학습? 주소록 프로그램 충분히 이해 .
소스 압축 캡쳐
[웹서버프로그래밍] 2022.05.10 커스텀 태그, JSTL 태그 (0) | 2022.05.10 |
---|---|
[웹서버프로그래밍] 2022.05.03 database connections, 표현 언어 (0) | 2022.05.03 |
[웹서버프로그래밍] 2022.04.12 Beans 클래스, mysql 연동 (0) | 2022.04.12 |
[웹서버프로그래밍] 2022.04.05 Assign 04 (0) | 2022.04.11 |
[웹서버프로그래밍] 2022.03.30 Assign 03 (0) | 2022.04.11 |