[JSP] ๋์ ๊ตฌํ(DB)
๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ JSP๋ก DB ์์ฑ โ ํ ์ด๋ธ ์์ฑ โ ํผ์ผ๋ก ํ ์ฝ์ โ ์กฐํ ์ถ๋ ฅ์ ์ ์ฒด ํ๋ฆ์ ํ์ ๋ฑ๋ก ์์ ๋ก ๊ตฌํํ๋ค.
1
2
3
dbcreate.jsp (DB ์์ฑ) โ createTable.jsp (ํ
์ด๋ธ)
โ formstudent.jsp (์
๋ ฅ ํผ) โ insertStudent.jsp (INSERT)
โ formStudentTable.jsp (SELECT ์ถ๋ ฅ)
1. DBยทํ ์ด๋ธ ์์ฑ (DDL)
์ฐ๊ฒฐ ํ SQL์ PreparedStatement.executeUpdate()๋ก ์คํํ๋ค.
1
2
3
4
5
6
7
8
9
10
// DB ์์ฑ
String sql = "CREATE DATABASE univ2";
pstmt = conn.prepareStatement(sql);
pstmt.executeUpdate();
// ํ
์ด๋ธ ์์ฑ (url ๋์ /univ2 ์ถ๊ฐ)
String sql = "CREATE TABLE student("
+ "studentNo int not null, name varchar(5), year tinyint,"
+ "dept varchar(10), addr varchar(50), primary key(studentNo))";
pstmt.executeUpdate();
2. ํผ ์ ๋ ฅ โ INSERT
ํผ์์ ๋ฐ์ ๊ฐ์ ๋ฐ์ธ๋ฉ ๋ณ์(?)๋ก ์์ ํ๊ฒ ์ฝ์
ํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
<%
int studentNo = Integer.parseInt(request.getParameter("studentNo"));
String name = request.getParameter("name");
// ... ๋๋จธ์ง ํ๋ผ๋ฏธํฐ
String sql = "INSERT INTO student(studentNo,name,year,dept,addr) VALUES(?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, studentNo); // ? ์๋ฆฌ์ ๊ฐ ๋ฐ์ธ๋ฉ
pstmt.setString(2, name);
// ...
pstmt.executeUpdate();
%>
๐ก ๊ฐ์ด ๋ค์ด๊ฐ๋ SQL์
?(๋ฐ์ธ๋ฉ ๋ณ์)๋ฅผ ์ฐ๊ณsetInt/setString์ผ๋ก ์ฑ์ด๋ค. SQL ์ธ์ ์ ์ ๋ง๊ณ ๊ฐ๋ ์ฑ๋ ์ข๋ค.
3. SELECT โ ํ ์ด๋ธ ์ถ๋ ฅ
executeQuery()์ ๊ฒฐ๊ณผ๋ฅผ ResultSet์ผ๋ก ๋ฐ์ while(rset.next())๋ก ์ํํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%
String sql = "SELECT * FROM student";
pstmt = conn.prepareStatement(sql);
ResultSet rset = pstmt.executeQuery(); // ์กฐํ โ ResultSet
%>
<table class="table table-dark table-striped">
<tr><th>ํ๋ฒ</th><th>์ด๋ฆ</th><th>ํ๋
</th><th>์ ๊ณต</th><th>์ฃผ์</th></tr>
<%
while (rset.next()) { // ๋ค์ ํ์ด ์์ผ๋ฉด true
%>
<tr>
<td><%= rset.getString("studentNo") %></td>
<td><%= rset.getString("name") %></td>
<td><%= rset.getString("year") %></td>
<!-- ... -->
</tr>
<%
}
%>
</table>
๐ก
ResultSet์ ์ปค์๋ ์ฒ์์ 0๋ฒ์งธ ํ(๋น ๊ณณ)์ ์์ด,next()๋ฅผ ํ ๋ฒ ํด์ผ ์ฒซ ํ์ผ๋ก ๊ฐ๋ค.next()๋ ํ์ด ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๋ฏ๋กwhile์กฐ๊ฑด์ผ๋ก ๋ฑ ๋ง๋ค. (์์์ Bootstrap์ผ๋ก ๊พธ๋ช๋ค)
| ๋ฉ์๋ | ์ญํ |
|---|---|
executeUpdate() | INSERT/CREATE ๋ฑ (ํ ์) |
executeQuery() | SELECT โ ResultSet |
rset.next() | ๋ค์ ํ์ผ๋ก (์์ผ๋ฉด true) |
rset.getString("์ปฌ๋ผ") | ํ์ฌ ํ์ ๊ฐ |
๐ ์ ๋ฆฌ
1
2
3
4
5
JSP ๋์ DB
โโ DDL CREATE โ executeUpdate
โโ INSERT ? ๋ฐ์ธ๋ฉ + setInt/setString โ executeUpdate
โโ SELECT executeQuery โ ResultSet
โโ ์ํ while(rset.next()) + getString
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| PreparedStatement | ๋ฐ์ธ๋ฉ ๋ณ์๋ก ์์ ํ SQL |
| executeUpdate/Query | ๋ณ๊ฒฝ / ์กฐํ |
| ResultSet | ์กฐํ ๊ฒฐ๊ณผ (์ปค์๋ก ์ํ) |
JSP๋ก DB๋ฅผ ๋ค๋ฃจ๋ฉด โํผ ์
๋ ฅ โ DB ์ ์ฅ โ ์กฐํ ์ถ๋ ฅโ์ด๋ผ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ํ๋ฆ์ ์ง์ ๊ตฌํํ ์ ์๋ค. ํนํ INSERT๋ ? ๋ฐ์ธ๋ฉ, SELECT๋ ResultSet ์ํ๊ฐ ๊ธฐ๋ณธ ํจํด์ด๋ค.



Comments powered by Disqus.