JAVA/DataBase
데이터를 입력받아 DB에 접근하기
DesignatedRoom
2020. 10. 20. 22:52
우선 테이블을 하나 만들도록 한다.
테이블에 저장할 데이터는 번호(정수), 이름(String), 전화번호(String),메모(String) 이다.
create table Phonebook(no NUMBER(3), name varchar2(20), phonenum varchar2(20), memo varchar2(100));
직접 키보드로 데이터들을 입력받아 데이터를 입력,출력,삭제,수정을 해보자.
위의 구문을 통해서 테이블을 하나 만든다.
1. Insert구문
소스 코드
더보기
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class InsertPhonebook {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.ojdbc6.jar 드라이버를 라이브러리로 포함(bulid path)
//2.드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
//url,id,password
if(conn==null) {System.out.println("DB접속에 실패");}
System.out.println("DB접속 성공");
//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기
Statement stmt=null;
int no;
String name,phonenum,memo;
Scanner input=new Scanner(System.in);
System.out.println("번호 이름 전화번호 메모 입력(2 홍길동 010-1111-1111 없음)");
no=input.nextInt();
name=input.next();
phonenum=input.next();
memo=input.next();
//System.out.printf("%d %s %s %s\n",no,name,phonenum,memo);
//String sql="insert into Phonebook(no,name,phonenum,memo) values(" +
//no + ",'" + name + "','"+phonenum +"','"+memo+"')";
String sql=String.format("insert into Phonebook(no,name,phonenum,memo) values(%d,'%s','%s','%s')",
no,name,phonenum,memo);
stmt=conn.createStatement();//위의 sql문을 처리하기 위해 객체 생성
int result=stmt.executeUpdate(sql);
System.out.println(result+"개가 입력되었습니다.");
stmt.close();
conn.close();
}
}
2. Select 구문
소스 코드
더보기
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SelectPhonebook {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.ojdbc6.jar 드라이버를 라이브러리로 포함(bulid path)
//2.드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
//url,id,password
if(conn==null) {System.out.println("DB접속에 실패");}
System.out.println("DB접속 성공");
//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기
Statement stmt=null;
ResultSet rs=null;
String sql="select * from phonebook";
stmt=conn.createStatement();//위의 sql문을 처리하기 위해 객체 생성
rs=stmt.executeQuery(sql);
//결과를 가지고 출력하는 방법 알아보기
while(rs.next()) {
int no=rs.getInt("no");
String name=rs.getString("name");
String phonenum=rs.getString("phonenum");
String memo=rs.getString("memo");
System.out.printf("%d %s %s %s\n",no, name, phonenum ,memo);
}
rs.close();
stmt.close();
conn.close();
}
}
3. Update 구문
소스 코드
더보기
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class UpdatePhonebook {
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
//1.ojdbc6.jar 드라이버를 라이브러리로 포함(bulid path)
//2.드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
//url,id,password
if(conn==null) {System.out.println("DB접속에 실패");}
System.out.println("DB접속 성공");
//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기
Statement stmt=null;
String search_name;
String phonenum;
Scanner input=new Scanner(System.in);
System.out.println("이름과 전화번호를 입력해 변경하세요.");
search_name=input.next();
phonenum=input.next();
String sql=String.format("update Phonebook set phonenum='%s' where name='%s'",
phonenum,search_name);
stmt=conn.createStatement();//위의 sql문을 처리하기 위해 객체 생성
int result=stmt.executeUpdate(sql);
System.out.println(result+"개가 수정되었습니다.");
stmt.close();
conn.close();
}
}
4. Delete 구문
소스 코드
더보기
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class DeletePhonebook {
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
//1.ojdbc6.jar 드라이버를 라이브러리로 포함(bulid path)
//2.드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
//url,id,password
if(conn==null) {System.out.println("DB접속에 실패");}
System.out.println("DB접속 성공");
//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기
Statement stmt=null;
String name;
Scanner input=new Scanner(System.in);
System.out.println("이름 입력해 삭제 하세요.");
name=input.next();
String sql=String.format("delete from Phonebook where name='%s'",name);
stmt=conn.createStatement();//위의 sql문을 처리하기 위해 객체 생성
int result=stmt.executeUpdate(sql);
System.out.println(result+"개가 삭제되었습니다.");
stmt.close();
conn.close();
}
}
5. 이름으로 탐색해서 정보 출력하는 내용으로 부록이다.
더보기
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 SearchSelectPhonebook {
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
//1.ojdbc6.jar 드라이버를 라이브러리로 포함(bulid path)
//2.드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","hr","1234");
//url,id,password
if(conn==null) {System.out.println("DB접속에 실패");}
System.out.println("DB접속 성공");
//sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기
Statement stmt=null;
ResultSet rs=null;
String search_name;
Scanner input=new Scanner(System.in);
System.out.println("찾을 이름을 입력하세요.");
search_name=input.next();
String sql=String.format("select * from phonebook where name='%s'",search_name);
stmt=conn.createStatement();//위의 sql문을 처리하기 위해 객체 생성
rs=stmt.executeQuery(sql);
//결과를 가지고 출력하는 방법 알아보기
while(rs.next()) {
int no=rs.getInt("no");
String name=rs.getString("name");
String phonenum=rs.getString("phonenum");
String memo=rs.getString("memo");
System.out.printf("%d %s %s %s\n",no, name, phonenum ,memo);
}
rs.close();
stmt.close();
conn.close();
}
}
PreparedStatement구문을 이용해서 위의 네 SQL문을 다음과 같이 바꾸어 쓸 수 있다.
designatedroom87.tistory.com/223