java/Spring
PreparedStatement를 이용한 튜플 삽입
킨글
2017. 4. 26. 14:28
import java.sql.*;
public class PreparedStatementTest
{
public static void main( String args[] )
{ // 드라이버 로딩
try {Class.forName("org.gjt.mm.mysql.Driver");
}catch ( java.lang.ClassNotFoundException e ) {
System.err.println("Driver load 에러: " + e.getMessage() );
e.printStackTrace();
}
try {
// 연결하기
String id = "root";
String pw = "1234";
String database = "university";
Connection con = DriverManager.getConnection("jdbc:mysql://" + "localhost:3306"+ "/" + database, id, pw);
// Statement 생성
Statement stmt = con.createStatement();
// 삽입하기 전의 course 테이블 출력
ResultSet rs = stmt.executeQuery("select * from course;"); // ResultSet을 이용
System.out.println( "*** course table before insertion ***") ;
while( rs.next() ) {
System.out.println(" * cno: " + rs.getString("cno")
+ "\tcname : "+ rs.getString("cname")
+ "\t\tcredit : " + rs.getInt("credit")
+ "\tdept : "+ rs.getString("dept")
+ "\t\t prname : "+ rs.getString("prname")
);
}
// 삽입할 course 데이터를 입력한 후 course 투플 삽입
System.out.println("\n ** course insertion **");
System.out.print(" o cno > ");
String cno = SkScanner.getString();
System.out.print(" o cname > ");
String cname = SkScanner.getString();
System.out.print(" o credit > ");
int credit = SkScanner.getInt();
System.out.print(" o dept > ");
String dept = SkScanner.getString();
System.out.print(" o prname > ");
String prname = SkScanner.getString();
------------------------------------------------ Statement와 다른부분 ------------------------------------------------
PreparedStatement prStmt = null ; // 먼저 null로 초기화 한다.
String sql = "insert into course values(?,?,?,?,?)"; // '?' 로 하지 않고 ?로 한다.
System.out.println("\tsql = "+sql); // 실제 작성된 SQL 문을 확인하기 위함
prStmt = con.prepareStatement(sql);
prStmt.setString(1, cno); // 파라미터 셋팅
prStmt.setString(2, cname); // 파라미터 셋팅
prStmt.setInt(3, credit); // 파라미터 셋팅
prStmt.setString(4, dept); // 파라미터 셋팅
prStmt.setString(5, prname); // 파라미터 셋팅
-----------------------------------------------------------------------------------------------------------------------------------------
int cnt = 0;
cnt = prStmt.executeUpdate(); // 쿼리를 실행하고, 반환되는 인덱스의 값을 cnt에 저장한다.
System.out.println("\n * " + cnt+" 튜플이 삽입됨\n") ;
// 삽입후의 course 테이블 출력
rs = stmt.executeQuery("select * from course;");
System.out.println("\n\n ** course table after insertion **") ;
// getInt()와 getString()의 애트리뷰트 이름으로 결과를 출력한다.
while( rs.next() ) {
System.out.println(" * cno: " + rs.getString("cno")
+ "\tcname : "+ rs.getString("cname")
+ "\t\tcredit : " + rs.getInt("credit")
+ "\tdept : "+ rs.getString("dept")
+ "\t\t prname : "+ rs.getString("prname")
);
}
} catch( SQLException ex ) {System.err.println("JDBC 오류:" + ex.getMessage() ); }
}
}