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