๐ JDBC (Java DataBase Connectivity)
: Java์ Oracle์ ์ฐ๋ํ๊ธฐ ์ํด JDBC๊ฐ ํ์ํจ
Java๊ฐ Database๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ฐ๊ฒฐํด์ฃผ๋ ์์ฉํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๋๊ฒจ์ง SQL ํํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์๊ตฌ ๋ฌธ์ฅ์ ๊ฐ ์์คํ ์ ๋ง๋๋ก ๋ฐ๊พธ๋ ์ญํ ์ ํจ
๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ๊ธฐ์ํ Java์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๐ก JDBC ์ฌ์ฉ๋ฒ
1. Class.forName()์ ์ด์ฉํด ๋๋ผ์ด๋ฒ ๋ก๋
2. DriverManager.getConnection() ์ผ๋ก ์ฐ๊ฒฐ
3. Connection ์ธ์คํด์ค๋ฅผ ์ด์ฉํด Statement ๊ฐ์ฒด ์์ฑ
4. Statement ๊ฐ์ฒด์ ๊ฒฐ๊ณผ๋ฅผ ResultSet์ด๋ int์ ๋ฐ๊ธฐ
// Driver ํด๋์ค ๋ก๋
Class.forName("oracle.jdbc.driver.OracleDriver");
// DB ์ฐ๊ฒฐ์ ์ํ Connection ๊ฐ์ฒด ์์ฑ
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "userid", "password");
// PreparedStatement ๊ฐ์ฒด ์์ฑ
PreparedStatement preparedStatement = connection.prepareStatement
("INSERT INTO USER(id,name,password) values (?,?,?)");
preparedStatement.setString(1,"id");
preparedStatement.setString(2,"name");
preparedStatement.setString(3,"password");
// SQL ์คํ
preparedStatement.executeUpdate();
// ๋ฆฌ์์ค ์ ๋ฆฌ
preparedStatement.close();
connection.close();
โ ResultSet
: executeQuery()์์ ์คํ๋ select๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด
๐ JDBC API ์ธํฐํ์ด์ค
๐ก Statement
: ์ผ๋ฐ์ ์ธ sql ์ฟผ๋ฆฌ ์คํ
SQL๋ฌธ์ DB๋ก ์ ์กํ ๋ ์ฌ์ฉ
โ ์ฅ์
: ํ๋์ Statement ์ธ์คํด์ค๋ก ๋ค์์ SQL๋ช ๋ น์ ์ ๋ฌํ์ฌ ์คํ ๊ฐ๋ฅ
โ ๋จ์
: SQL ๋ช ๋ น Java ๋ณ์๊ฐ์ ํฌํจํ๊ณ ์ ํ ๊ฒฝ์ฐ ๋ฌธ์์ด ๊ฒฐํฉ ๊ธฐ๋ฅ์ ์ด์ฉํด์ผํจ
SQL injection ๊ณต๊ฒฉ์ ์ทจ์ฝํจ
String sql = "SELECT name, phone, address FROM mt";
Statement s = conn.credateStatement();
ResultSet rs = s.executeQuery(sql);
๐ก PreparedStatement
: ๋์ ๋๋ ๋งค๊ฐ ๋ณ์๊ฐ ํ์ํ sql ์ฟผ๋ฆฌ๋ฅผ ์คํ
IN ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๊ฑฐ๋ ๊ฐ์ง์ง ์๋ SQL๋ฌธ์ ์คํํ๋๋ฐ ์ฌ์ฉ
? (InParameter) ๊ธฐํธ๋ฅผ ์ฌ์ฉํจ
โ ์ฅ์
: Inparameter๋ฅผ ์ด์ฉํด ๊ฐ์ ์ ๋ฌ๋ฐ์ SQL ๋ช ๋ น์ ์์ฑํ ์ ์์
๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ ํจ์จ์ฑ ์ฆ๊ฐ (Inparameter์ ์ฌ์ฉ)
SQL injection ๊ณต๊ฒฉ ๊ธฐ์ ์ ๋ฌดํจํ์ฒ๋ฆฌํจ ๐ ์ฌ์ฉ์ ์ ๋ ฅ ๊ฐ์ ๋ฌด์กฐ๊ฑด SQL ๋ช ๋ น์ ๊ฐ์ผ๋ก ์ฒ๋ฆฌํจ
โ ๋จ์
: ํ๋์ SQL ๋ช ๋ น๋ง์ ์ ์ฅํ์ฌ ์ ๋ฌ ๊ฐ๋ฅ
String sql = "UPDATE mt SET name = ?, phone = ?, address = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "์ด์๋ฆผ");
ps.setString(2, "010-1234-5678");
ps.setString(3, "์ธ์ฒ์");
ResultSet rs = ps.executeQuery();
โ setString(int index,String value)
: ๋ฌผ์ํ๋ฅผ ๋์ฒดํ ๊ฐ์ ์ง์ ํด์ฃผ๋ ๋ฉ์๋ (index๋ 1๋ถํฐ ์์)
โ setNString(int index, String value)
: ๋ฌผ์ํ๋ฅผ ๋์ฒดํ ๊ฐ์ ์ง์ ํด์ฃผ๋ ๋ฉ์๋,
๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์กํ ๋ SQL NCHAR ๋๋ NVCAR ๋๋ LONGNVARCHAR ๊ฐ์ผ๋ก ๋ณํ
๐ก CallableStatement
: ์ ์ฅ๋ ํ๋ก์์ ๋ฅผ ์คํ
โ ์ฅ์
: ์คํ์๋๊ฐ ๋น ๋ฅด๊ณ ์ฟผ๋ฆฌ์ ์์ด ์ค์ด ๋ถํ๊ฐ ์ ์
๐ ExecuteQuery
: ์ํ๊ฒฐ๊ณผ๋ก ResultSet ๊ฐ์ฒด์ ๊ฐ์ ๋ฐํ, Select ๊ตฌ๋ฌธ์ ์ํํ ๋ ์ฌ์ฉ๋๋ ํจ์
๐ ResultSet ๊ฐ์ฒด์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํ
๐ก ResultSet
: ์ ์ฅ๋ ๊ฐ์ ํ ํ ๋จ์๋ก ๋ถ๋ฌ์ฌ ์ ์์
ํ ํ์์ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋๋ ํ์ ์ ์ง์ ํด ๋ถ๋ฌ์ฌ ์ ์์
๐ next() : ์ ํ๋๋ ํ์ ๋ณ๊ฒฝํ ์ ์์
๐ getํ์ () : ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์
rs = stmt.executeQuery("select * from member");
while(rs.next()) { // next()๊ฐ ์์ ๋ ๊น์ง ๋ฐ๋ณต
System.out.println(rs.getInt(1) + "\t" + rs.getString(2));
//์ปฌ๋ผ์ 1๋ฒ์งธ ๊ฐ์ intํ์ผ๋ก, 2๋ฒ์งธ ๊ฐ์ Stringํ์ผ๋ก ๊ฐ์ ธ์ด
}
๐ ExecuteUpdate
: ์ํ๊ฒฐ๊ณผ๋ก Int ํ์ ์ ๊ฐ์ ๋ฐํ, SELECT ๊ตฌ๋ฌธ์ ์ ์ธํ ๋ค๋ฅธ ๊ตฌ๋ฌธ์ ์ํํ ๋ ์ฌ์ฉ๋๋ ํจ์
๐ INSERT / DELETE / UPDATE ์ ๋ฐ์๋ ๋ ์ฝ๋์ ๊ฑด์๋ฅผ ๋ฐํํจ
๐ CREATE / DROP ์ -1 ๋ฐํ
'ORACLE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
#35 [ORACLE] LIKE, ์์ผ๋ ๋ฌธ์ (2) | 2022.11.21 |
---|---|
#34 [ORACLE] OUTER JOIN, NVL, NVL2, IN, COALESCE (3) | 2022.11.18 |
#33 [ORACLE] MOD,REMAINDER,DATE ํจ์,๋ฌธ์์ด ์ฐ๊ฒฐ, SUBSTR, ์งํฉ์ฐ์ฐ์ (0) | 2022.11.17 |
#32 [ORACLE] ์ง๊ณ ํจ์, GROUP BY, DISTINCT, VIEW (0) | 2022.11.16 |
#31 [ORACLE] Cascade (1) | 2022.11.15 |
๋๊ธ