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("프로그램 종료됨");
}
}
Reference
この問題について(Oracleテーブルでのデータの入力、取得), 我々は、より多くの情報をここで見つけました https://velog.io/@cseon230/오라클-테이블에-데이터-입력하기-읽어오기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol