Java setNull(int parameterIndex, int sqlType)
2023. 2. 20. 12:04ㆍJava
프로젝트 내 src 내 javabasic 패키지 내 InsertNull.java
package javabasic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Types;
public class InsertNull {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String sql = "insert into person values(?,?,?,?)";
Connection conn = null;
PreparedStatement pst = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
System.out.println("접속 완료!!!");
conn = DriverManager.getConnection(url, "scott", "a1234");
pst = conn.prepareStatement(sql);
//preparedStatement setNull(pindex, Types.INTEGER)
//정수형 타입을 null로 설정:java.sql.Types.INTEGER
//실수형 타입을 null로 설정:java.sql.Types.DOUBLE
//숫자형 타입을 null로 설정:java.sql.Types.NUMERIC
//문자형 타입을 null로 설정:java.sql.Types.VARCHAR / setString(pindex, null)
pst.setNull(1, Types.INTEGER);
pst.setString(2, null); //pst.setNull(2, Types.VARCHAR)
pst.setNull(3, Types.DOUBLE);
pst.setNull(4, Types.DATE);
pst.executeUpdate();
if(pst != null) pst.close();
if(conn != null) conn.close();
}
}
//Scrollable ResultSet 양방향 여태까지 ResultSet은 단방향이었다
//양방향으로 ResultSet을 활용한다면 효율적으로 데이타에 접근할 수 있다. JDBC 2.0부터
//포함된 기능인 Scrollable ResultSet은 그동안 Forward Only만 제공했던
//ResultSet에 전후 이동이 가능한 기능을 제공하여 Cursor이동의 편리함을 줄 수 있으며
//행의 갱신도 가능
//ResultSet Type 과련 상수
//TYPE_FORWARD_ONLY: 커서 이동시 next()만 사용가능.스크롤이 불가능한 Forward
//Only형
//TYPE_SCROLL_INSENSITIVE : 스크롤은 가능하나 변경된 사항은 적용되지
//않는다.
//TYPE_SCROLL_SENSITIVE : 스크롤이 가능하며 변경된 사항이 적용된다.
//테이블에서도 수정된 사항을 변경하려면 UPDATE해야 하고 아니면 그냥 ResultSet만
//변경되고 DB에 테이블은 전혀 변경되지 않는다.
//Concurrency Type 관련 상수
//CONCUR_READ_ONLY : 읽기 전용. 커서의 위치에서 ResultSet오브젝트의 변경
//이 불가능
//CONCUR_UPDATEABLE : 데이터 동적 갱신 가능. 커서의 위치에서 ResultSet
//오브젝트의 변경이 가능0
실행 결과
접속 완료!!!
SQL> SELECT * FROM person;
NO NAME WEIGHT BIRTHDAY
---------- ---------- ---------- ---------------------------------------------------------------------------
1 장비 96.5 22/02/21 12:12:24.000000
2 유비 96.5 22/02/23 10:15:22.000000
3 김관우 96.5 22/02/23 10:15:30.000000
4 장관우 96.5 22/02/23 10:15:40.000000
2 김관우 90.9 23/02/19 16:03:07.808000
7 개의 행이 선택되었습니다.
레코드에 모두 NULL 값을 넣어서 확인해 보려고 한줄을 더 삽입한다.
SQL> INSERT INTO PERSON VALUES(5,"김말똥", 100.23, sysdate);
INSERT INTO PERSON VALUES(5,"김말똥", 100.23, sysdate)
*
1행에 오류:
ORA-00984: 열을 사용할 수 없습니다
ORA-00984 오류가 발생하는 경우로는
insert 문에서 문자열에 작은따옴표(') 를 사용하지 않을 경우
작은 따옴표 대신에 큰따옴표를 사용할 경우
내장 함수 등의 이름이 오타로 잘못된 경우가
있겠다.
SQL> INSERT INTO PERSON VALUES(5, '김말똥', 100.23, SYSDATE);
1 개의 행이 만들어졌습니다.
SQL> SELECT * FROM PERSON;
NO NAME WEIGHT BIRTHDAY
---------- ---------- ---------- ---------------------------------------------------------------------------
1 장비 96.5 22/02/21 12:12:24.000000
2 유비 96.5 22/02/23 10:15:22.000000
3 김관우 96.5 22/02/23 10:15:30.000000
4 장관우 96.5 22/02/23 10:15:40.000000
2 김관우 90.9 23/02/19 16:03:07.808000
5 김말똥 100.2 23/02/20 11:52:25.000000
8 개의 행이 선택되었습니다.
김말똥 바로 윗줄에 레코드에는 모두 NULL 값이 대입되어 있다.
void java.sql.PerparedStatement.setNull(int parameterIndex, int sqlType) throws SQLException
setNull(int parameterIndex, int sqlType) 메서드는
지정된 파라메터를 SQL NULL 로 설정한다.
int parameterIndex 에서 첫번째 파라메터는 1, 두 번째는 2, ... 이렇게 간다.
int sqlType 파라메터는 java.sql.Types 클래스에 정의된 SQL 형(타입) 코드 이다.
'Java' 카테고리의 다른 글
Java while 문 무한 loop 종료 (0) | 2023.02.20 |
---|---|
Java createStatement() (1) | 2023.02.20 |
Java getBufferSize() (0) | 2023.02.20 |
Java executeBatch() (0) | 2023.02.20 |
Java setDriverClassName(String driverClassName) (0) | 2023.02.20 |