-
JDBC를 이용해서 쿼리 입력하는 코드JDBC 2022. 2. 3. 16:46
**유튜브 뉴렉쳐님의 강의를 들으면서 공부하고 정리한 내용입니다.
저번에 이클립스에서 SELECT 할 때 사용했던 클래스를 이용해서 입력해보도록 하자
지난번에 사용했던 program.java 파일을 복사해서 program2.java 파일을 생성 해 준다.

ResultSet rs = st.executeQuery(sql); insert/update/delete에는 사용 하지 않기 때문에 지워주고String sql문에는 지난번에 만들었던 insert문을 복사해서 붙여넣기 해 준다. 복사 해 올 때 세미콜론은 지워줘야한다.
아마 그래도 복사 붙여넣기 하면 \r\n이 적혀 있을것이다. 이거는 ctrl+f 해서 전부 지워주도록 한다. replace부분은 공백으로 두고 replace/find 버튼 클릭
public static void main(String[] args) throws ClassNotFoundException, SQLException { String url = "jdbc:oracle:thin:@localhost:1521/xepdb1"; String sql = "INSERT INTO notice (" + " title," + " writer_id," + " content," + " files" + ") VALUES (" + " 'TESTTITLE'," + " 'BANDAL'," + " 'TEST CONTENT'," + " 'FILE_01'" + ")"; Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection(url,"sys as sysdba", "Ew170916!!"); Statement st = con. createStatement(); //ResultSet rs = st.executeQuery(sql); insert/update/delete에는 사용 하지 않는다. st.close(); con.close(); } }그럼 이렇게 깔끔하게 지워진 것을 확인 할 수 있다.
사용자 값을 받아와서 넣으려면 변수가 필요하기 때문에 위에다가 변수를 선언 해 준다.
문제는 이제 이 변수를 꽂아 넣을거면 문자열을 잘라서 이어붙이기 작업이 필요하게 된다.
"'+title+"',"+
이런식으로 원래 데이터 모양으로 온전히 꽂힐 수 있도록 작성해줘야하는데 복잡하고 실수 할 경우도 많이 생긴다.
이 문제를 도와 줄 jdbc 실행자가 있다.Statement를 사용해서 데이터를 바로 꽂아 줄 수 있는 도구가 있다.
우선 값 입력 부분을 지워주고 넣고자 하는 컬럼 수 많큼 물음표로 채워준다.+ ") VALUES (?,?,?,?)";
그런 다음 prepareStatement를 통해서 미리 쿼리문을 다 채워주고 실행만 할 수 있게 해준다.
PreparedStatement st = con.prepareStatement(sql);그런 다음 st에 set으로 담아주면 된다.
st.setString(1, title); st.setString(2, writerId); st.setString(3, content); st.setString(4, files);set뒤에는 사용해야 할 데이터 타입을 작성해주고 뒤에 숫자는 인덱스 번호인데 일반적인 인덱스는 0번부터 시작이지만 이건 1번부터 시작이다. 뒤에는 담아야 할 컬럼명을 작성 해 준다.
그런 다음
st.executeUpdate();코드를 작성 해 주고 실핼 시켜준다.
그리고 insert가 제대로 된다면 콘솔창에 1이라는 값이 뜰 것이다. 그럼 그 결과값을 int로 담아줘야한다,
int result = st.executeUpdate();
1개의 컬럼이 추가 된 것을 확인 할 수 있다.
sql developer에서도 확인 해보자.

값이 잘 들어온것을 확인 할 수 있다.
'JDBC' 카테고리의 다른 글
JDBC 데이터 삭제하기 (0) 2022.02.03 JDBC 데이터 수정하기 (0) 2022.02.03 JDBC 데이터 입력 쿼리문 작성 하기 (0) 2022.02.03 JDBC 조건을 추가하여 출력하기 (0) 2022.01.31 레코드의 모든 컬럼 출력하기 (0) 2022.01.31