Database 연결 객체 전용 클래스를 만든 후 쿼리문을 날려보아요...
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import com.util.DBConn;
public class Test
{
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
Connection conn = DBConn.getConnection();
if (conn == null)
{
System.out.println("데이터 베이스 연결 실패~!!!");
System.exit(0);
}
try
{
Statement stmt = conn.createStatement();
String sql = "INSERT INTO SAMPLETABLE(NAME) VALUES('이동욱')";
int result = stmt.executeUpdate(sql);
if (result > 0)
{
System.out.println("데이터 입력 성공~!!!");
}
else
{
System.out.println("입력 실패~ ㅠ_ㅠ");
}
} catch (Exception e)
{
System.out.println(e.toString());
}
DBConn.close();
}
}
이 때 주의할 점
1. 데이터 입력 쿼리문 실행 시 기본 키 제약조건이 설정되어 있다면 위와 같은 상황에선 동일한 키 값이 중복 될 수 없기 때문에 딱 한 번만 실행 가능한 코드이다.
2. 쿼리문 String slq = "INSERT INTO SAMPLETABLE(NAME) VALUES('이동욱')"; 끝에 세미콜론(;)을 찍지 않는다.
→ String 대입 연산자 이하 문장(?)에는 붙여야 함.
3. 자바에서 실행한 DML 문은 자동 COMMIT 이다.
4. 오라클에서 트랜잭션 처리가 끝나지 않은 상태이면(COMMIT을 하지 않은 상태) 데이터 액션 처리가 이루어지지 않는다.
JDBC 프래그래밍 절차
1. 드라이버 로딩 : Class.forName();
→ Oracle Driver 를 JAVA 에서 사용하기 위해 드라이버를 JVM 에 로딩
2. 커넥션 할당 : DriverManager.getConnection();
3. 쿼리문 전송을 위한 작업 객체 할당 : Statement 또는 PreparedStatement
→ conn.createStatement(); 또는 conn.preparedStatement();
4. 작업 객체를 활용하여 쿼리문 전송
DML(insert, update, delete)문인 경우 : int updateCount = stmt.executeUpdate(sql);
→ 영향받은 레코드 수(적용된 행의 갯수) 반환
select 문인 경우 : ResultSet rs = stmt.executeQuery(sql);
→ 결과 집합 형태로 ResultSet 반환
5. (select 구문의 경우) : ResultSet 의 논리적 커서 이동을 통해 각 컬럼의 데이터를 바인딩해 온다.
boolean b = rs.next();
→ 커서 이동. 커서가 위치한 지점에 레코드가 존재하면 true 를 반환, 없으면 false 를 반환. 커서는 가장 선두 첫 번째 레코드의 직전에 위치하고 있다가 next()가 호출되면 진행한다. like 이터레이터
6. 사용을 마친 리소스 반납 :
rs.close(); → ResultSet
stmt.close(); → Statement
DBConn.close(); → null 체크하여 close(), finally 블럭에서 구현하는 것을 권장.
'Study📚 > Java' 카테고리의 다른 글
자바 - StringBuffer, StringBuilder (1) | 2023.11.25 |
---|---|
자바 - JDBC SELECT 쿼리문 날리기 (0) | 2023.11.21 |
자바 - JDBC Database 연결 객체 전용 클래스 (0) | 2023.11.20 |
자바 - 다차원 배열 연습 (0) | 2023.10.19 |
자바 - 안내문 진거 (0) | 2023.10.19 |