코딩은 실력보다 시력이지

빅데이터교육과정/DB

DAY 2. 이클립스를 활용한 sql사용

Listeria 2021. 3. 17. 03:46

자바에서 오라클을 활용하는 작업을 하기 위해선 위와 같이 lib에 jar파일을 넣어줄 필요가 있다.

Statement를 활용하는 방식. 입력해야 하는 값이 노출이 되기 때문에 보안성이 떨어진다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import ="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import ="javax.naming.*" %>
<%
	Connection conn = null;
	String sql="INSERT INTO student (num, name) Values (6,'hh')";

	try{
		Context init = new InitialContext();
		DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
		conn = ds.getConnection();	
		
		Statement stmt = conn.createStatement();
		
		int result =stmt.executeUpdate(sql);
		if(result!=0){
			out.println("success");
		}
	}catch(Exception e){
		out.println("fail");
		e.printStackTrace();
	}
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

 

preparedStatement를 활용하는 방식. 입력되는 값들을 은밀하게 처리할 수 있어서 보안성이 statement방식에 비해 뛰어남.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
Connection conn = null;
String sql = "INSERT INTO student (num, name) Values (?,?)"; //?는 나중에 채울것.
String []name = {"syc","ssk","kjw","sss"};
try {
	Context init = new InitialContext();
	DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
	conn = ds.getConnection(); //풀방식

	PreparedStatement stmt = conn.prepareStatement(sql);

	for (int i = 20; i <= 23; i++) {
		stmt.setInt(1, i);
		stmt.setString(2, name[i-20]);
		if (stmt.executeUpdate()!=0) {
		}
	}
} catch (Exception e) {
	out.println("fail");
	e.printStackTrace();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

이클립스에서 java를 이용하여 Oracle을 사용할 때 sql 명령어는 오라클에서 사용하는것과 동일하다. 그외에 sql로 변동시킬 데이터를 입력하거나 불러오는 등 대부분의 기능은 api형태로 지원하기 때문에 여기에 익숙해질 필요가 있다.