์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฟผ๋ฆฌ๋ฌธ์ ์ ์กํ ๋ ์ฌ์ฉํ ์ ์๋ 2๊ฐ์ง ์ธํฐํ์ด์ค โ ๋ ์ธํฐํ์ด์ค ๋ชจ๋ SQL ์ง์๋ฌธ์ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค. โ ์ฌ์ฉ์ ๋ฐ๋์ try~catch๋ฌธ ๋๋ throws ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค.
| ์ฟผ๋ฆฌ๋ฌธ | ๋ฉ์๋ | ๋ฐํ๊ฐ | ์ฌ์ฉ๋ก |
|---|---|---|---|
| SELECT | executeQuery() | ResultSet | ResultSet ๊ฐ์ฒด๋ช = Statement๊ฐ์ฒด.executeQuery(โSELECT๋ฌธโ) |
| INSERT UPDATE DELETE |
executeUpdate() | ์ฒ๋ฆฌ๋ ๋ ์ฝ๋(row) ๊ฐ์ | int A=Statement๊ฐ์ฒด.executeUpdate(๋ณ์๋ช ) |
| CREATE ALTER |
execute() | 0 (resultset๊ณผ ๊ฐฑ์ ๋ ๋ ์ฝ๋ ์ ๋ ๋ค ๋ฐํ ๊ฐ๋ฅ) | ย |
Statement ์ธํฐํ์ด์ค
- Statement ๊ฐ์ฒด๋ Statement ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ Connection ํด๋์ค์
createStatement( )๋ฉ์๋๋ฅผ ํธ์ถํจ์ผ๋ก์จ ์ป์ด์ง๋ค. - Statement ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด
executeQuery( )๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ SQL๋ฌธ์ ์คํ์ํฌ ์ ์๋ค. ๋ฉ์๋์ ์ธ์๋ก SQL๋ฌธ์ ๋ด์ String๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ค. - Statement๋
์ ์ ์ธ ์ฟผ๋ฆฌ๋ฌธ์ ์ฒ๋ฆฌํ ์ ์๋ค. ์ฆ ์ฟผ๋ฆฌ๋ฌธ์ ๊ฐ์ด ๋ฏธ๋ฆฌ ์ ๋ ฅ๋์ด ์์ด์ผ ํ๋ค.
import java.sql.Statement;
import java.sql.Connection;
import java.sql.SQLException;
public class StatementTest
{
public static void main(String args[])
{
Connection conn = null; // DB์ฐ๊ฒฐ๋ ์ํ(์ธ์
)์ ๋ด์ ๊ฐ์ฒด
Statement stm = null; // SQL ๋ฌธ์ ๋ํ๋ด๋ ๊ฐ์ฒด
try {
conn = DBConnection.getConnection();
stm = conn.createStatement();
String quary = "INSERT INTO TEST VALUES('id1', 'pw1', 'name1')";
int success = stm.executeUpdate(quary);
if(success > 0)
System.out.println("๋ฐ์ดํฐ ์
๋ ฅ ์ฑ๊ณต");
else
System.out.println("๋ฐ์ดํฐ ์
๋ ฅ ์คํจ");
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
}
PreparedStatement ์ธํฐํ์ด์ค
- PreparedStatementย ๊ฐ์ฒด๋ย Connectionย ํด๋์ค์
preparedStatement( )๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์์ฑํ๋ค. ์ด ๋ฉ์๋๋ ์ธ์๋ก SQL๋ฌธ์ ๋ด์ String๊ฐ์ฒด๊ฐ ํ์ํ๋ค. - SQL๋ฌธ์ฅ์ด
๋ฏธ๋ฆฌ ์ปดํ์ผ๋๊ณ , ์คํ ์๊ฐ๋์ ์ธ์๊ฐ์ ์ํ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์๋ค๋ ์ ์์ Statement ๊ฐ์ฒด์ ๋ค๋ฅด๋ค. - Statement ๊ฐ์ฒด์ SQL์ ์คํ๋ ๋ ๋งค๋ฒ ์๋ฒ์์ ๋ถ์ํด์ผ ํ๋ ๋ฐ๋ฉด,ย PreparedStatementย ๊ฐ์ฒด๋ ํ ๋ฒ ๋ถ์๋๋ฉด
์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๋ค. - ๊ฐ๊ฐ์ ์ธ์์ ๋ํด
์์นํ๋(placeholder)๋ฅผ ์ฌ์ฉํ์ฌ SQL๋ฌธ์ฅ์ ์ ์ํ ์ ์๊ฒ ํด์ค๋ค. ์์นํ๋๋?๋ก ํํ๋๋ค. - ๋์ผํ SQL๋ฌธ์ ํน์ ๊ฐ๋ง ๋ฐ๊พธ์ด์ ์ฌ๋ฌ ๋ฒ ์คํํด์ผ ํ ๋, ์ธ์๊ฐ ๋ง์์ SQL๋ฌธ์ ์ ๋ฆฌํด์ผ ๋ ํ์๊ฐ ์์ ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค.
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
public class PreparedStatementTest
{
public static void main(String args[])
{
Connection conn = null; // DB์ฐ๊ฒฐ๋ ์ํ(์ธ์
)์ ๋ด์ ๊ฐ์ฒด
PreparedStatement pstm = null; // SQL ๋ฌธ์ ๋ํ๋ด๋ ๊ฐ์ฒด
try {
String quary = "INSERT INTO TEST VALUES(?, ?, ?)";
conn = DBConnection.getConnection();
pstm = conn.prepareStatement(quary);
// ์ฟผ๋ฆฌ์ ๊ฐ์ ์ธํ
ํ๋ค.
// ์ฌ๊ธฐ์ 1, 2, 3์ ์ฒซ๋ฒ์งธ, ๋๋ฒ์งธ, ์ธ๋ฒ์งธ ์์นํ๋ ๋ผ๋ ๋ป
pstm.setString(1, "id2");
pstm.setString(2, "pw2");
pstm.setString(3, "name2");
int success = pstm.executeUpdate();
if(success > 0)
System.out.println("๋ฐ์ดํฐ ์
๋ ฅ ์ฑ๊ณต");
else
System.out.println("๋ฐ์ดํฐ ์
๋ ฅ ์คํจ");
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
}
PreparedStatement ์ฅ์
๋์ ์ธ ์ฟผ๋ฆฌ๋ฌธ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ๊ฐ์ SQL๋ฌธ์์ ๊ฐ๋ง ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ๋ค๋๊ฐ ์ธ์๊ฐ ๋ง์ ๊ฒฝ์ฐ_์ ์ฌ์ฉํ๊ธฐ ์ข๋ค. ๋ํ _๋ฏธ๋ฆฌ ์ปดํ์ผ๋๊ธฐ ๋๋ฌธ์ ์ํ ์๋๊ฐ Statement๋ณด๋ค ๋น ๋ฅธ ์ฅ์ ์ด ์๋ค.
๋ Statement ๊ฐ์ฒด๋ ์ฟผ๋ฆฌ ์คํ์ ๊ฐ์ ์์๋ฐ์ดํ( โ )๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์์๋ฐ์ดํ๋ฅผ ๋ ๊ฐ( โ โ ) ํ์ํด์ผ ํ๋ค(ex_I โ โ am). ๊ทธ๋ฌ๋ PreparedStatement ๊ฐ์ฒด๋ ์์๋ฐ์ดํ ๋ฌธ์ ๋ฅผ ์ฟผ๋ฆฌ ์คํ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋ค.