๐ 2022๋ 11์ 18์ผ ๊ธ์์ผ
์ด์ ์๋ฒฝ 4์ ๋์ด์๊น์ง ๋ชป์ค๋ค...
Java main class not Found Error ๋๋ฌธ์..
ํผ๊ณคํด์ ์ฃฝ์๊ฑฐ๊ฐ์ ...
์๋ ์ ์ฌ์ฏค์ด๋ฉด ๋ชป์ค์ด๋ ์ข ์ฉ์ฉํด์ง๋๋ฐ...
DB ๋ถ๋ถ ๋ชป๋ฐ๋ผ๊ฐ์ ์์
๋ด์ฉ๋ ๋ชป์์๋ฃ๊ฒ ์..
์ฃผ๋ง๋์ Java๋ DB ๋ถ๋ถ ๋นก๊ณตํด์ผํจ ใ
ใ
๐ญ๐ญ
DB ์ฐ๊ฒฐ ์์ ์ ํ ์ ์๋๋ก Java์์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
JDBC: Java Database Connectivity
- JDBC Driver๋ฅผ ๊ด๋ฆฌ
- DB์ ์ฐ๊ฒฐํด์
Connection
๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑ
Statement
,PreparedStatement
,CallableStatement
๊ตฌํ๊ฐ์ฒด ์์ฑ- ํธ๋์ญ์ ์ฒ๋ฆฌ ๋ฐ DB ์ฐ๊ฒฐ์ ๋์ ๋ ์ฌ์ฉ
- SQL์ DDL๊ณผ DML์ ์คํํ ๋ ์ฌ์ฉ
- DDL: Data Definition Language
- DML: Data Manipulation Language
- ์ฃผ๋ก ๋ณ๊ฒฝ๋์ง ์๋ ์ ์ SQL๋ฌธ์ ์คํํ ๋ ์ฌ์ฉ
- Statement์ ๋์ผํ๊ฒ SQL์ DDL๊ณผ DML ๋ฌธ์ ์คํํ ๋ ์ฌ์ฉ
- ๋งค๊ฐ๋ณ์ํ๋ SQL๋ฌธ ์ฌ์ฉ ๊ฐ๋ฅ
- ํธ๋ฆฌ์ฑ๊ณผ ๋ณด์์ฑ์ด ์ข์
- Statement ๋ณด๋ค ์ฃผ๋ก ์ฌ์ฉ๋จ
- DB์ ์ ์ฅ๋์ด ์๋ ํ๋ก์์ (procuder)์ ํจ์(function)์ ํธ์ถํ ๋ ์ฌ์ฉ
- DB์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ฌ์ฉ
ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ DB์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฅ ๋จผ์ ํด์ผ ํ ์์
Class.forName("com.mysql.cj.jdbc.Driver");
- Class.forName() ๋ฉ์๋๋ ๋ฌธ์์ด๋ก ์ฃผ์ด์ง JDBC Driver ํด๋์ค๋ฅผ Build Path์์ ์ฐพ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ฉํจ
- ์ด ๊ณผ์ ์์ JDBC Driver ํด๋์ค์ static ๋ธ๋ก์ด ์คํ๋จ
- DriverManager์ใ JDBC Driver ๊ฐ์ฒด๊ฐ ๋ฑ๋ก๋จ
- Build Path์์ JDBC Driver ํด๋์ค๋ฅผ ๋ชป์ฐพ์ผ๋ฉด ClassNotFoundException ๋ฐ์
- ์์ธ์ฒ๋ฆฌ ํด์ผํจ
Connection conn = DriverManager.getConnection("์ฐ๊ฒฐ ๋ฌธ์์ด", "์ฌ์ฉ์", "๋น๋ฐ๋ฒํธ");
- DriverManager์ JDBC Driver๊ฐ ๋ฑ๋ก๋๋ฉด getConnection() ๋ฉ์๋๋ก DB์ ์ฐ๊ฒฐ ๊ฐ๋ฅ
jdbc:mysql://localhost:3306/'DB(Database)์ด๋ฆ'
- MySQL์ ์ฐ๊ฒฐ ๋ฌธ์์ด
- localhost : ๋ก์ปฌ์ ์ค์น๋ MySQL์ ์ฐ๊ฒฐํ๊ฒ ๋ค๋ ์๋ฏธ
- 3306 : Port ๋ฒํธ
- ๋ง์ง๋ง์ DB ์ด๋ฆ์ ๊ธฐ์
์ฐ๊ฒฐ์ด ์ฑ๊ณตํ๋ฉด getConnection() ๋ฉ์๋๋ Connection ๊ฐ์ฒด๋ฅผ ๋ฆฌํด ์ฐ๊ฒฐ์ด ์คํจํ๋ฉด SQLException์ด ๋ฐ์ํ๋ฏ๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ผํจ
JDBC๋ฅผ ์ด์ฉํด์
INSERT๋ฌธ
์คํ
SQL๋ฌธ์ดINSERT
,UPDATE
,DELETE
์ผ ๊ฒฝ์ฐ,executeUpdate()
๋ฉ์๋ ํธ์ถ
INSERT INTO users (userID, userName, userPassword, userAge, userEmail)
VALUES ('winter', 'ํ๊ฒจ์ธ', '12345', '25', 'winter@mycompany.com')
-
1๏ธโฃ ๊ฐ์
?
(๋ฌผ์ํ)๋ก ๋์ฒดํด์ ๋งค๊ฐ๋ณ์ํINSERT INTO users (userID, userName, userPassword, userAge, userEmail) VALUES (?, ?, ?, ?, ?)
-
2๏ธโฃ INSERT๋ฌธ์ String ํ์ ๋ณ์
sql
์ ๋ฌธ์์ด๋ก ๋์String sql = new StringBuilder() .append("INSERT INTO users (userID, userName, userPassword, userEmail) ") .append("VALUES (?, ?, ?, ?, ?)") .toString(); OR String sql = "" + "INSERT INTO users (userID, userName, userPassword, userEmail) " + "VALUES (?, ?, ?, ?, ?)";
-
3๏ธโฃ ๋งค๊ฐ๋ณ์ํ๋ SQL ๋ฌธ์ ์คํํ๋ ค๋ฉด
PreparedStatement
๊ฐ ํ์ํจPreparedStatement pstmt = conn.prepareStatement(sql);
- Connection์ prepareStatement() ๋ฉ์๋๋ก๋ถํฐ PreparedStatement๋ฅผ ์ป๊ธฐ
-
4๏ธโฃ
?
์ ๋ค์ด๊ฐ ๊ฐ ์ง์ pstmt.setString(1, "winter"); pstmt.setString(2, "ํ๊ฒจ์ธ"); pstmt.setString(3, "12345"); pstmt.setString(4, 25); pstmt.setString(5, "winter@mycompany.com");
?
๋ ์์์ ๋ฐ๋ผ 1๋ฒ๋ถํฐ ๋ฒํธ๊ฐ ๋ถ์ฌ๋จ- ๊ฐ์ ํ์ ์ ๋ฐ๋ผ Setter ๋ฉ์๋ ์ ํ
- ์ฒซ ๋ฒ์งธ์๋
?
์ ์๋ฒ, ๋ ๋ฒ์งธ์๋ ๊ฐ์ ์ง์
-
5๏ธโฃ ๊ฐ์ ์ง์ ํ ํ
executeUpdate()
๋ฉ์๋ ํธ์ถint rows = pstmt.executeUpdate();
- SQL๋ฌธ์ด ์คํ๋๋ฉด์ users ํ ์ด๋ธ์ 1๊ฐ์ ํ์ด ์ ์ฅ๋จ
- executeUpdate() ๋ฉ์๋๊ฐ ๋ฆฌํดํ๋ ๊ฐ์ ์ ์ฅ๋ ํ ์
- ์ ์์ ์ผ๋ก ์คํ๋์์ ๊ฒฝ์ฐ 1์ ๋ฆฌํด
-
6๏ธโฃ
close()
๋ฉ์๋๋ฅผ ํธ์ถํด์ ๋ฉ๋ชจ๋ฆฌ ํด์ pstmt.close();
- PreparedStatement๋ฅผ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ
INSERT INTO boards (btitle, bcontent, bwriter, bdate, bfilename, bfiledata)
VALUES ('๋ ์ค๋ ๋ ', 'ํจ๋ฐ๋์ด ๋ด๋ ค์', 'winter', now(), 'snow.jpg', binaryData)
bno
๋ ์๋ ์ฆ๊ฐ ์ปฌ๋ผ์ด๋ฏ๋ก ์๋ตnow()
๋ ํ์ฌ ์๊ฐ
-
1๏ธโฃ
now()
๋ฅผ ์ ์ธํ๊ณ ๋๋จธ์ง๋?
๋ก ๋์ฒด์์ผ ๋งค๊ฐ๋ณ์ํ ์ํค๊ณ String ํ์ ๋ณ์sql
์ ์ ์ฅString sql = "" + "INSERT INTO boards (btitle, bcontent, bwriter, bdate, bfilename, bfiledata) " + "VALUES (?, ?, ?, now(), ?, ?)";
-
2๏ธโฃ
PreparedStatement
์ป๊ธฐPreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
- ๋๋ฒ์งธ ๋งค๊ฐ๊ฐ์ INSERT ๋ฌธ์ด ์คํ๋ ํ ๊ฐ์ ธ์ฌ ํค ๊ฐ
- ์๋ ์ฆ๊ฐ๋
bno
๊ฐ์ ๊ฐ์ ธ์ด SQL
๋ฌธ์ด ์คํ๋๊ธฐ ์ ์๋bno
๊ฐ์ ๋ชจ๋ฆSQL
๋ฌธ์ด ์คํ๋ ํ์bno
์ปฌ๋ผ์ ์ค์ ๋ก ์ ์ฅ๋ ๊ฐ์ ์ป๋ ๊ฒ
- ์๋ ์ฆ๊ฐ๋
- ๋๋ฒ์งธ ๋งค๊ฐ๊ฐ์ INSERT ๋ฌธ์ด ์คํ๋ ํ ๊ฐ์ ธ์ฌ ํค ๊ฐ
-
3๏ธโฃ
?
๊ฐ ์ง์ pstmt.setString(1, "๋ ์ค๋ ๋ "); pstmt.setString(2, "ํจ๋ฐ๋์ด ๋ด๋ ค์."); pstmt.setString(3, "winter"); pstmt.setString(4, "snow.jpeg"); pstmt.setBlob(5, new FileInputStream("๋ ์ฌ์ง ๊ฒฝ๋ก"));
bfiledata
์ปฌ๋ผ์ ๋ฐ์ด๋๋ฆฌ ํ์ (blob
)์setBinaryStream()
,setBlob()
,setBytes()
๋ฉ์๋ ์ค ํ๋๋ฅผ ์ด์ฉ
-
4๏ธโฃ
INSERT
๋ฌธ์ ์คํํ๊ณ ์ ์ฅ๋bno
๊ฐ์ ์ป๋ ๋ฐฉ๋ฒint rows = pstmt.executeUpdate(); // SQL๋ฌธ ์คํ if(rows == 1) { ResultSet rs = pstmt.getGeneratedKeys(); // new String[] { "bno" }์ ๊ธฐ์ ๋ ์ปฌ๋ผ ๊ฐ์ ๊ฐ์ ธ์ด if(rs.next()) { // ๊ฐ์ด ์๋ค๋ฉด int bno = rs.getInt(1); // new String[] { "bno" }์ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ bno์ ์ปฌ๋ผ ๊ฐ์ ์ฝ์ } rs.close(); // ResultSet์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ํด์ }
# bno๊ฐ 2์ธ ๊ฒ์๋ฌผ์ btitle, bcontent, bfiledata๋ฅผ ๋ณ๊ฒฝ
UPDATE boards SET
btitle='๋์ฌ๋',
bcontent='๋์ผ๋ก ๋ง๋ ์ฌ๋',
bfilename='snowman.jpeg',
bfiledata=binaryData
WHERE bno=2
-
1๏ธโฃ ๊ฐ์
?
๋ก ๋์ฒดํด์ ๋งค๊ฐ๋ณ์ํUPDATE boards SET btitle=?, bcontent=?, bfilename=?, bfiledata=? WHERE bno=?
-
2๏ธโฃ
sql
์ ๋งค๊ฐ๋ณ์ํ๋UPDATE
๋ฌธ ์ ์ฅString sql = new StringBuilder() .append("UPDATE boards SET ") .append("btitle=?, ") .append("bcontent=?, ") .append("bfilename=?, ") .append("bfiledata=? ") .append("WHERE bno=?") .toString();
-
3๏ธโฃ
PreparedStatement
์ป๊ธฐPreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "๋์ฌ๋"); pstmt.setString(2, "๋์ผ๋ก ๋ง๋ ์ฌ๋"); pstmt.setString(3, "snowman.jpeg"); pstmt.setBlob(4, new FileInputStream("ํ์ผ ์ ์ฅ ๊ฒฝ๋ก")); pstmt.setInt(5, 2);
-
4๏ธโฃ
UPDATE
๋ฌธ์ ์คํํ๊ธฐ ์ํดexecuteUpdate()
๋ฉ์๋ ํธ์ถint rows = pstmt.executeUpdate();
DELETE FROM boards WHERE bwriter='snow'
-
1๏ธโฃ ๋งค๊ฐ๋ณ์ํ๋
DELETE
๋ฌธ์ผ๋ก ๋ณ๊ฒฝDELETE FROM boards WHERE bwriter=?
-
2๏ธโฃ
DELETE
๋ฌธ์sql
์ ๋์String sql = "DELETE FROM boards WHERE bwriter=?";
-
3๏ธโฃ
PreparedStatement
๋ฅผ ์ป๊ณ ๊ฐ์?
์ง์ ํSQL
๋ฌธ ์คํString sql = "DELETE FROM boards WHERE bwriter=?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "snow"); int rows = pstmt.executeUpdate();
- ๋ฆฌํด๊ฐ : ์ญ์ ๋ ํ ์
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋
SELECT
๋ฌธ์ผ ๊ฒฝ์ฐ,executeQuery()
๋ฉ์๋ ํธ์ถ
ResultSet rs = pstmt.executeQuery();
SELECT๋ฌธ์ ๊ธฐ์ ๋ ์ปฌ๋ผ์ผ๋ก ๊ตฌ์ฑ๋ ํ์ ์งํฉ
SELECT userid, username, userage FROM users
- ์ปค์๊ฐ ์๋ ํ์ ๋ฐ์ดํฐ๋ง ์ฝ์ ์ ์์
- ์ปค์ : ํ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
-
๊ฐ์ ธ์จ ๋ฐ์ดํฐ ํ์ ์๋ค๋ก
beforeFirst
์afterLast
ํ์ด ๋ถ์- ์ต์ด ์ปค์๋
beforeFirst
๋ฅผ ๊ฐ๋ฆฌํด
- ์ต์ด ์ปค์๋
-
์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ ํ์ธ first ํ์ ์ฝ์ผ๋ ค๋ฉด ์ปค์๋ฅผ ์ด๋์์ผ์ผ ํจ
-
next()
๋ฉ์๋ ์ฌ์ฉboolean result = rs.next();
next()
๋ฉ์๋๋ ์ปค์๋ฅผ ๋ค์ ํ์ผ๋ก ์ด๋์ํด
-
์ด๋ํ ํ์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด true๋ฅผ ๋ฆฌํด
-
์ด๋ํ ํ์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด false๋ฅผ ๋ฆฌํด
- โ SELECT ๋ฌธ์ผ๋ก ๊ฐ์ ธ์จ ๋ฐ์ดํฐ ํ์ด ์๋ ๊ฒฝ์ฐ
beforeFirst
ํ๊ณผafterLast
ํ์ด ๋ถ์ด์๊ธฐ ๋๋ฌธ์
์ฒซ ๋ฒ์งธnext()
๊ฒฐ๊ณผ๋ false
-
โ 1๊ฐ์ ๋ฐ์ดํฐ ํ๋ง ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐ
ResultSet rs = pstmt.executeQuery(); if(rs,next()) { //์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ํ ์ฒ๋ฆฌ } else { //afterLast ํ์ผ๋ก ์ด๋ํ์ ๊ฒฝ์ฐ }
- if ์กฐ๊ฑด์์์
next()
๋ฉ์๋๋ฅผ 1๋ฒ ํธ์ถ - ์ฃผ๋ก SELECT ๋ฌธ์ด ๊ธฐ๋ณธํค(Primary Key)๋ฅผ ์กฐ๊ฑด์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ
- if ์กฐ๊ฑด์์์
-
โ n๊ฐ์ ๋ฐ์ดํฐ ํ์ ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐ
ResultSet rs = pstmt.executeQuery(); while(rs.next()) { //last ํ๊น์ง ์ด๋ํ๋ฉด์ ๋ฐ์ดํฐ ํ ์ฒ๋ฆฌ } //afterLast ํ์ผ๋ก ์ป๋ํ์ ๊ฒฝ์ฐ
-
while ๋ฌธ์ ์ด์ฉํด์
next()
๋ฉ์๋๋ฅผ ๋ฐ๋ณต ํธ์ถ -
true๊ฐ ๋ฆฌํด๋ ๋์(
last
ํ๊น์ง ์ด๋ํ ๋๊น์ง) ๋ฐ์ดํฐ ํ์ ์ฒ๋ฆฌ -
false๊ฐ ๋ฆฌํด๋๋ฉด(
afterLast
ํ์ผ๋ก ์ด๋ํ ๋) ๋ฐ๋ณต์ ์ข ๋ฃ -
ResultSet์ ์ฌ์ฉ์ด ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ์ํค๋ ๊ฒ์ด ์ข๋ค
rs.close();
close()
๋ฉ์๋ ํธ์ถ- ๋ง์ ๋ฐ์ดํฐ ํ์ด ์ ์ฅ๋ ์ ์๊ธฐ ๋๋ฌธ
-
Getter ๋ฉ์๋ ์ฌ์ฉ
ResultSet
์์ ์ปฌ๋ผ ์๋ฒ์ 1๋ถํฐ ์์- userid = 1, username = 2, userage = 3
-
โ๏ธ ์ปฌ๋ผ ์ด๋ฆ์ผ๋ก ์ฝ๊ธฐ
String userid = rs.getString("userid"); String userName = rs.getString("username"); int userAge = rs.getInt("userage");
-
โ๏ธ ์ปฌ๋ผ ์๋ฒ์ผ๋ก ์ฝ๊ธฐ
String userid = rs.getString(1); String userName = rs.getString(2); String userAge = rs.getInt(3);
-
SELECT ๋ฌธ์ ์ฐ์ฐ์์ด๋ ํจ์ ํธ์ถ์ด ํฌํจ๋์ด์๋ค๋ฉด ์๋ฒ์ผ๋ก ์ฝ์ด์ผ ํจ
SELECT userid, userage -1 FROM users String userId = rs.getString("userid"); int userAge = rs.getInt(2);
- 1๏ธโฃ User ํด๋์ค ์์ฑ
-
2๏ธโฃ userid๊ฐ winter์ธ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ SELECT ๋ฌธ
SELECT userid, username, userpassword, userage, useremail FROM users WHERE userid='winter';
-
3๏ธโฃ ์กฐ๊ฑด์ ์ ๊ฐ์
?
๋ก ๋์ฒดํ ๋งค๊ฐ๋ณ์ํ๋ SQL๋ฌธ์sql
์ ๋์String sql = "" + "SELECT userid, username, userpassword, userage, useremail " + "FROM users " + "WHERE userid=?";
-
4๏ธโฃ PreparedStatement๋ฅผ ์ป๊ณ
?
์ ๊ฐ์ ์ง์ PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "winter");
-
5๏ธโฃ
executeQuery()
๋ฉ์๋๋ก SELECT ๋ฌธ์ ์คํํด ResultSet ์ป๊ธฐResultSet rs = pstmt.executeQuery(); if(rs.next()) { User user = new User(); user.setUserId(rs.getString("userid")); user.setUserName(rs.getString("username")); user.setUserPassword(rs.getString("userpassword")); user.setUserAge(rs.getInt(4)); // ์ปฌ๋ผ ์๋ฒ์ ์ด์ฉํด์ ์ปฌ๋ผ ์ง์ user.setUserEmail(rs.getString(5)); // ์ปฌ๋ผ ์๋ฒ์ ์ด์ฉํด์ ์ปฌ๋ผ ์ง์ System.out.println(user); } else { // ๋ฐ์ดํฐ ํ์ ๊ฐ์ ธ์ค์ง ์์์ ๊ฒฝ์ฐ System.out.println("์ฌ์ฉ์ ์์ด๋๊ฐ ์กด์ฌํ์ง ์์"); }
- userid : ๊ธฐ๋ณธํค(Primary key)
- ์กฐ๊ฑด์ ๋ง๋ ํ์ 1๊ฐ์ด๊ฑฐ๋ 0๊ฐ
- if ๋ฌธ์ ์ด์ฉ
next()
๋ฉ์๋๊ฐ true๋ฅผ ๋ฆฌํดํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ์ User ๊ฐ์ฒด์ ์ ์ฅํ๊ณ ์ถ๋ ฅ
System.out.println(user)
๋ ๋กฌ๋ณต์ด ์์ฑํ User์toString()
๋ฉ์๋๋ฅผ ํธ์ถํด์ ๋ฐ์ ๋ฆฌํด๊ฐ์ ์ถ๋ ฅ
- userid : ๊ธฐ๋ณธํค(Primary key)
- BoardInsertExample ์์ ๋ฅผ ์ด์ฉํด
boards ํ ์ด๋ธ์ bwriter๋ฅผ winter๋ก ํ๋ ๊ฒ์๋ฌผ์ 2๊ฐ ์ด์ ์ ์ฅ
- 1๏ธโฃ Board ํด๋์ค ์์ฑ
- boards ํ ์ด๋ธ์ 1๊ฐ ํ(๊ฒ์๋ฌผ)์ ์ ์ฅํ ์ฉ๋
- ์ปฌ๋ผ ๊ฐ์์ ํ์ ์ ๋ง๊ฒ ํ๋ ์ ์ธ
- ๋กฌ๋ณต
@Data
์ด๋ ธํ ์ด์ ์ฌ์ฉ(Getter, Setter, toString) - ๐ Board
-
2๏ธโฃ bwriter๊ฐ winter์ธ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ SELECT ๋ฌธ
SELECT bno, btitle, bcontent, bwriter, bdate, bfilename, bfiledata FROM boards WHERE bwriter='winter';
-
3๏ธโฃ ์กฐ๊ฑด์ ์ ๊ฐ์
?
๋ก ๋์ฒดํ ๋งค๊ฐ๋ณ์ํ๋ SELECT ๋ฌธ์sql
์ ๋์String sql = "" + "SELECT bno, btitle, bcontent, bwriter, bdate, bfilename, bfiledata " + "FROM boards " + "WHERE bwriter=?";
-
4๏ธโฃ PreparedStatement๋ฅผ ์ป๊ณ
?
์ ๊ฐ์ ์ง์ PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "winter");
-
5๏ธโฃ
executeQuery()
๋ฉ์๋๋ก SELECT ๋ฌธ์ ์คํ ํ ResultSet ์ ์ป๊ธฐResultSet rs = pstmt.executeQuery(); while(rs.next()) { //๋ฐ์ดํฐ ํ์ ์ฝ๊ณ Board ๊ฐ์ฒด์ ์ ์ฅ Board board = new Board(); board.setBno(rs.getInt("bno")); board.setBtitle(rs.getString("btitle")); board.setBcontent(rs.getString("bcontent")); board.setBwriter(rs.getString("bwriter")); board.setBdate(rs.getDate("bdate")); board.setBfilename(rs.getString("bfilename")); board.setBfiledata(rs.getBlob("bfiledate")); //์ฝ์์ ์ถ๋ ฅ System.out.println(board); }
- ์กฐ๊ฑด์ ๋ง๋ ํ์ n๊ฐ
- while ๋ฌธ์ ์ด์ฉํด์
next()
๋ฉ์๋๊ฐ false๋ฅผ ๋ฆฌํดํ ๋ ๊น์ง ๋ฐ๋ณต - ๋์จ ๊ฐ์ Board ๊ฐ์ฒด์ ์ ์ฅํ๊ณ ์ถ๋ ฅ
System.out.println(board)
๋ ๋กฌ๋ณต์ด ์์ฑํ Board์toString()
์ ๋ฆฌํด๊ฐ์ ์ถ๋ ฅ
-
6๏ธโฃ Blob ๊ฐ์ฒด์ ์ ์ฅ๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ
# ์คํธ๋ฆผ ์ป๊ธฐ Blob blob = board.getBfiledata(); InputStream is = blob.getBinaryStream(); # ๋ฐฐ์ด ์ป๊ธฐ Blob blob = Board.getBfiledata(); byte[] bytes = blob.getBytess(0, blob.length());
-
7๏ธโฃ Blob ๊ฐ์ฒด์์ InputStream์ ์ป๊ณ ํ์ผ๋ก ์ ์ฅํ๊ธฐ
InputStream is = blob.getBinaryStream(); OutputStream os = new FileOutputStream("/Users/NOSTALJIAN/Downloads/" + board.getBfilename()); is.transferTo(os); os.flush(); os.close(); is.close();