JSP 4일차 JDBC

HOHO·2023년 3월 23일

#JSP

목록 보기
4/6

Formatting Tag

<!-- 숫자포맷팅 -->
<c:set var = "price" value="10000" />
<fmt:formatNumber value="${price}" type="number" var="numbertype">
</fmt:formatNumber> <br>
원화 : <fmt:formatNumber type="currency" currencySymbol="" value="${price}">
</fmt:formatNumber> <br>
퍼센트 : <fmt:formatNumber value="${price}" type="percent" groupingUsed="false">
</fmt:formatNumber> <br>

<!-- 날짜 시간 포맷팅 -->
<c:set var="now" value="<%= new java.util.Date() %>" />
<fmt:formatDate value="${now}" type="date" dateStyle="full" /> <br>
<fmt:formatDate value="${now}" type="date" dateStyle="short" /> <br>
<fmt:formatDate value="${now}" type="time" /> <br>
<fmt:formatDate value="${now}" type="both" 
                dateStyle="full" timeStyle="full" /> <br>
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd hh:mm:ss" /> <br>
<!-- 대문자 MM month, 소문자 mm minute -->

JDBC

(Java DataBase Connetivity)의 약자이고 자바에서 DB관련 작업을 처리할때 사용하는 API 이다.

대충 순서

JDBC 홈페이지 다운로드 제일밑 커뮤니티다운로드 Connector/J , (Connector -> 각언어들과 DB들의 연결 커넥터)
다운받고 WEB-INF/lib 안에 jar파일 하나만 넣기

JDBC의 전형적인 실행순서

  1. JDBC드라이버 로딩
  2. DB 커넥션을 구한다
  3. 쿼리 실행을 위한 Statement생성
  4. 쿼리실행
  5. 쿼리실행결과 사용
  6. Statement 종료
  7. DB커넥션 종료
<%@ page import="java.sql.*" %>

간단하게 연결해보기

<% 
// 1.JDBC드라이버 로딩(MYSQL)
Class.forName("com.mysql.jdbc.Driver");//-> MYSQL JDBC드라이버
//Java API에 DB 연결 객체
Connection conn = null;

//ResultSet DB의 데이터를 JAVA에서 그대로 사용할수있게 하는 객체 
//-> select의 결과를 DBMS에서 Java로 저장하기위한 객체
ResultSet rs = null;

//sql 질의문 작성후에 실행을 위한 객체
//PreparedStatement를 많이 쓴다고한다
Statement stmt = null;

//연결
//드라이브 매니저에게 Connection객체 요청
//Connection객체을 얻기위해서는 (URL, ID, PASSWORD)필요
//URL -> SQL localHost주소(MYSQL은 3306인듯 DB마다 다르데) 
//ID는 보통 root일거고 비번은 내가정한 1234
try{//try-catch 필수로 사용한다고 함
	String url="jdbc:mysql://localhost:3306/sample?serverTimezone=Asia/Seoul"; 
//"jdbc:mysql://localhost:3306/연결할 데이터베이스명?serverTimezone=Asia/Seoul" 시간설정 서울
//?뒤에 한글깨짐 방지로 데이터베이스명 + "useUnicode=true&characterEncoding=utf8"; 이거 넣어도됨

	String dbUser = "root";
	String dbPw = "1234";

// 2.DB 커넥션 생성
	DriverManager.getConnection(url, dbUser, dbPw);
	out.println("DB연결성공");

}catch(SQLException ex){
	out.println("DB연결실패");
	
}finally{
	//커넥션 종료
	if (conn != null){ conn.close();}
}
%>

DB와 연동해보기

<%@ page import="java.sql.*" %>

<body>
<table border="1">
<!-- while(rs.next())로 반복해야하는 줄은
실제데이터줄이기 때문에 상단헤더줄은 고정 하고 
다음줄부터 반복문 돌린다 -->
		<tr>
			<td>게시판 번호</td>
			<td>내용</td>
			<td>작성자</td>
			<td>작성일</td>
			<td>조회</td>
			<td>좋아요~</td>
		</tr>
<%
	Class.forName("com.mysql.jdbc.Driver");//-> MYSQL JDBC드라이버
	Connection conn = null;
	ResultSet rs = null;
	Statement pst = null;
	
	try {
		String url = "jdbc:mysql://localhost:3306/sample?
        serverTimezone=Asia/Seoul";
		String dbUser = "root";
		String dbPw = "1234";
		
		String query = "select * from board";

		conn = DriverManager.getConnection(url, dbUser, dbPw);
		
		pst = conn.createStatement();
		rs = pst.executeQuery(query);
		
		
		out.println("DB연결성공"); 

	while(rs.next()){
    //DB와 비교해서 데이터가 위치한 곳까지 한줄씩 뿌려준다 
	//1번줄..2번줄..3번줄... 다음줄에 데이터가 있으면 True를반환하고 계속 반복돌림
%>
<!-- board테이블과 column매칭시켜준다 -->
		<tr>
			<td><%= rs.getInt("no") %></td>
			<td><%= rs.getString("content") %></td>
			<td><%= rs.getString("uid") %></td>
			<td><%= rs.getString("writedate") %></td>
			<td><%= rs.getInt("count") %></td>
			<td><%= rs.getInt("good") %></td>
		</tr>
<!-- DB에 정의되있는 column 순서를바꿔서 출력가능 -->
<%
	}//반복문 실행하므로 catch와 finally는 밖으로빼서 예외검사
}catch (SQLException ex) {
	out.println("DB연결실패");

} finally {
	if (conn != null) {
		conn.close();
	}
}
%>
	</table>
</body>

결과

profile
기계 그잡채가 되고싶다

0개의 댓글