package kr.or.didt.basic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class JdbcTest04 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe",
"JSG99","java");
System.out.println("계좌번호 정보 추가하기");
System.out.println("계좌번호 : ");
String bankNo = scan.next();
String sql1 = "select * from BANKINFO where bank_no = " + bankNo;
stmt = conn.createStatement();//rql문을 리턴받아서 자바로 출력(통역)
rs = stmt.executeQuery(sql1);
String val="";
while(rs.next()){
val = rs.getString(1);
}
boolean flag = true;
while(flag){
if(val.equals(bankNo)){
System.out.println("다시 입력 하쇼");
bankNo = scan.next();
}else{flag = false;}
}
/*선생님 방식
* String bankNo = null;
* int count = 0;
* do{
* System.out.println("계좌번호 : ");
bankNo = scan.next();
String sql2 = "select count(*) from bankinfo"
+ "where bank_no = ?";
* pstmt2 = conn.prepareStatement(sql2);
* pstmt2.setString(1, bankNo);
*
* rs = pstmt2.executeQuery();
* if(rs.next()){
* //select문의 결과가 1개의 레코드일 경우 if문 사용가능
* count = rs.getInt("cnt"); //컬럼의 alias로 설정하기
*
* }
*
* if(count>0){
* System.out.println(bankNo + "계좌번호는 이미 있는 번호입니다.");
* System.out.println("다시 입력하세요");
* System.out.println()
* }
*
* }while();
*
*
*/
System.out.println("은행명 : ");
String bankName = scan.next();
System.out.println("예금주명 : ");
String bankUser = scan.next();
String sql2 = "insert into bankinfo(bank_no, bank_name, bank_user_name, bank_date)"
+ "values('" + bankNo + "', '"+bankName + "','" + bankUser +"', sysdate)";
stmt = conn.createStatement();//연결했다고 알려주기
//select문을 실행할 때는 executeQuery()메서드를 사용하고
//insert, update, delete문과 같이 select문이 아닌 쿼리문을
// 실행할 때는 executeUpdate()메서드를 사용한다.
//executeUpdate()메서드의 반환값은 작업에 성공한 레코드 수를 반환한다.
int cnt = stmt.executeUpdate(sql2); //행이 업데이트라 숫자만
//PreparedStatement객체를 이용하는 방법
// - SQL문을 작성할 때 데이터가 들어갈 자리를 물음표로 표시한다
String sql = "insert into bankinfo(bank_no, bank_name, bank_user_name, bank_date)"
+ "values(?, ?, ?, sysdate)";
System.out.println("반환값 : " + cnt);
if(cnt > 0){
System.out.println("insert 성공~");
}else{
System.out.println("insert 실패!");
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
if(stmt != null) try {stmt.close();} catch (SQLException e2) {}
if(conn != null) try {conn.close();} catch (SQLException e2) {}
}
}
}