Oracleテーブルでのデータの入力、取得


入力データ

<Test004.java>

package com.test;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import com.util.DBConn;

public class Test004
{
	public static void main(String[] args) throws SQLException, ClassNotFoundException
	{
		Scanner sc = new Scanner(System.in);
		
		Connection conn = DBConn.getConnection();
		
		do
		{
			System.out.print("번호를 입력하세요(-1 종료) : ");
			String sid = sc.next(); // 문자열 형태로 받아와 sid에 대입.
			
			// 반복문의 조건을 무너뜨리는 코드 구성
			if (sid.equals("-1")) // sid가 -1과 같으면 종료하겠다.
				break; // break 문을 만나면 do while 문을 빠져나간다.
			
			System.out.print("이름을 입력하세요 : ");
			String name = sc.next();
			
			System.out.print("전화번호를 입력하세요 : ");
			String tel = sc.next();
			
			if (conn != null)
			{
				System.out.println("데이터베이스 연결 성공~");
				
				try
				{
					// 작업 객체 준비
					Statement stmt = conn.createStatement();
					
					// 쿼리문 준비
					String sql = String.format("INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(%s, '%s', '%s')", sid, name, tel);
					// 오라클에서 SID가 NUMBER로 선언되어 있으므로 넘겨줄때 따옴표 없이 넘겨줘야 한다.
					
					//데이터베이스로부터 질의 결과를 가져와야 하는경우
					// → executeQuery() 메소드 사용
					
					//특정 내용을 데이터베이스에 적용해야 하는 경우
					// → executeUpdate() 메소드 사용
					
					int result = stmt.executeUpdate(sql);
					//-- executeUpdate() 메소드는 적용된 행의 갯수를 반환한다.
					
					if (result > 0)
					{
						System.out.println("회원 정보가 입력되었습니다.");
					}
				} catch (Exception e)
				{
					System.out.println(e.toString());
				}
				
			}
			else
			{
				System.out.println("데이터베이스 연결 실패!!!");
				break;
			}
			
		} while (true);
		
		sc.close(); // 스캐너 리소스 반납(굳이 안해도 됨)
		
		DBConn.close();
		
		System.out.println("데이터베이스 연결 닫힘!");
		System.out.println("프로그램 종료됨!!");
	}
}

データの読み込み

<Test005>

package com.test;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.util.DBConn;

public class Test005
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		// 연결 객체 생성
		Connection conn = DBConn.getConnection();
		
		if (conn != null)
		{
			System.out.println("데이터베이스 연결 성공");
			
			try
			{
				//작업 객체 생성
				Statement stmt = conn.createStatement();
				
				// 쿼리문 준비(select)
				String sql = "SELECT SID, NAME, TEL FROM TBL_MEMBER ORDER BY SID";
				/*
				String sql = "SELECT SID, NAME, TEL" 
							+ " FROM TBL_MEMBER" 
							+ " ORDER BY SID";
				*/
				// ※ 쿼리문을 구성하는 과정에서 공백이나 개행 처리 check~!!!
				
				// ※ executeQuery() 메소드를 사용하면
				// 질의 결과는 ResultSet 객체로 가져올 수 있다.
				// 하지만, ResultSet 객체가 질의에 대한 결과물 모두를
				// 한꺼번에 갖고있는 구조는 아니다.
				// 단지, 데이터베이스로부터 획득한 질의 결과물에 대한
				// 관리가 가능한 상태가 되는 것이다.
				// 이 때문에 데이터베이스와의 연결을 끊게 되면
				// ResultSet 객체는 더 이상 질의 결과를 관리할 수 없게 된다.
				
				
				// 쿼리문 실행
				ResultSet rs = stmt.executeQuery(sql);
				// ※ executeQuery 문은 ResultSet 을 반환함.
				// ResultSet은 "결과집합" 인터페이스
				// ResultSet에 실제로 값이 담겨있는건 아니라 관리가 가능한 상태임
				
				// ResultSet에 대한 처리 (반복문 구성)
				while (rs.next()) // 다음값이 있는지 없는지 반환하는 next 메소드. 있으면 true.
				{
					String sid = rs.getString("SID"); // 문자열로 select해서 받아오니까 getString 메소드 사용.
					String name = rs.getString("NAME");
					String tel = rs.getString("TEL"); // 만약 실수값이면.. getDouble 메소드 사용. 
					
					String str = String.format("%3s %8s %12s", sid, name, tel);
								 // 이런 형태의(format) "문자열로" 반환하겠다.
					             // System.out.printf("%3d %8s %12s", sid, name, tel);
					
					System.out.println(str);
				}
				
				// ResultSet 리소스 반납
				rs.close();
				
				// Statement 리소스 반납
				stmt.close();
				
			} catch (Exception e)
			{
				System.out.println(e.toString());
			}
			
			
		}
		else
		{
			System.out.println("데이터베이스 연결 실패");
		}
		
		DBConn.close();
		
		System.out.println("데이터베이스 연결 닫힘");
		System.out.println("프로그램 종료됨");
	}
}