package JDBC_Example;import java.sql.*;public class StatInsert {public static void main(String[] args) {String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // thin방식으로 아이피 : 포트번호 : DB타입String user = "scott";String pass = "tiger";try {// 1. 드라이버를 메모리 로딩Class.forName("oracle.jdbc.driver.OracleDriver"); // String 값은 양쪽에서 받을 수 있으니까.// 2. 연결객체 얻어오기Connection con = DriverManager.getConnection(url, user, pass);System.out.println("연결성공");// 3.sql 문장만들기int Empno = 7777;String name = "inwookim";String job = "CS";String sql = "INSERT INTO EMP (EMPNO,ENAME,JOB) VALUES ('"+Empno+"','" + name + "','"+job+"')";// String sql = "DELETE FROM info_tab " + "WHERE name='김길자'";System.out.println(sql);// 4.전송객체 가져오기Statement st = con.createStatement();// 5. 전송st.executeUpdate(sql);// 6. 닫기st.close();con.close();System.out.println("실행성공");} catch (Exception ex) {System.out.println("실패 : " + ex.getMessage());ex.printStackTrace();}}}
소스 코드는 위와 같다 .
작성자는 user은 scott 계정을 사용하며 scott계정 내에 있는 EMP테이블을 사용해서 구현해 보았다.
eclipse내에서 SQL로 데이터를 보내기 위해서는
1.드라이버 로딩
2.연결객체 얻어오기
3.SQL문장 만들기
4.전송객체 가져오기
5.전송
6.닫기
위와 같은 순으로 작성을 해서 SQL과 연결을 할 수 있는데 , 먼저 기본적인 INSERT 문장을 써서 SQL에 데이터를 집어 넣어 보고 싶었다.
데이터를 넣는 도중 계속 오류가 발생하는 것이다.
오류는 다음과 같다.
java.sql.SQLSyntaxErrorException: ORA-00947: 값의 수가 충분하지 않습니다
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1000)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1814)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1779)
at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:277)
at JDBC_Example.StatInsert.main(StatInsert.java:35)
값의 수가 일치하지 않는 다는 것인데 , 테이블에 주어진 컬럼의 수와 일치하지 않아서 그런것인지 해서 넣어 보았지만 오류가 계속 났다.
알고보니 , 오라클에서 만들어준 EMP테이블에 EMPNO 컬럼이 PRiMARY KEY로 제한걸려 있던 것이다.
java에서 SQL로 보낼 때 확인해야 하는 것은 내가 데이터를 넣고자 하는 컬럼이 프라이머리 키인지 확인 해 보면 좋을 것같다.
프라이머리 키인 EMPNO를 주어서 INSERT 한 결과값은 굉장히 잘 들어가진다 ㅎㅎ
'Backend > jdbc' 카테고리의 다른 글
JfreeChart로 데이터를 시각화 해보자. (0) | 2018.08.22 |
---|---|
eclips에서 SQL 데이터 보기 (0) | 2018.08.22 |
eclipse에서 SQL 데이터 수정하기 (0) | 2018.08.22 |
JDBC 하기 위한 사전조건을 해보자. (0) | 2018.08.22 |
JDBC (0) | 2018.08.21 |
#IT #먹방 #전자기기 #일상
#개발 #일상