문제. jdbc1을 참고하여 jdbc2 클래스에 회원가입 수정 프로그램을 작성해보자
1. 아이디를 기준으로 수정
2. sql 쿼리를 저장할 객체는 StringBuilder 사용
StringBuilder 참조변수 = new StringBuilder("문자열");
참조변수.append(문자열).append("문자열") ...
싱글톤 패턴을 이용한 DB연결
싱글톤 패턴: 디자인 패턴 중 하나로 매번 드라이버를 로드하지 않고 프로게스에서 객체를 단 하나만 만들어
재활용할 수 있도록 공유자원을 생성하는 방법
하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할때 드는 비용이 줄어드는 장점이 있다
✔ 디자인 패턴
소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 발생했을 때 재사용할 수 있는
해결책을 다룬 알고리즘
PreparedStatement 인터페이스
- Statement와 PreparedStatement의 차이는 캐시 사용 유무
- 객체를 캐시에 담아 재사용
- 반복적으로 쿼리를 수행한다면 statement에 비해 성능이 많이 좋음
- statement는 보안상 취약점이 발견되었기 때문에 PreparedStatement를 사용하는 것을 권장하고 있음
- PreparedStatement는 코드가 길어질 수 있음
*Statement
StringBuilder sql = new StringBuilder();
sql.append("delete from tb_member ")
.append("where mem_userid='" + mem_userid + "'");
*PreparedStatement
StringBuilder sql = new Stringbuilder();
sql.append("delte from tb_member ")
.append("where mem_userid=?");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
//캐쉬에 담기위해 컴파일을 먼저 실행하고 그후에 물음표에 뭐담을지 받는다
pstmt.setString(1, mem_userid); 1은 첫번째 물음표라는 뜻
pstmt.executeUpdate();
ResultSet 인터페이스
- 결과를 저장할 수 있는 객체
- 저장된 값을 로우 단위로 불러올 수 있음
- 로우 단위로 데이터를 가져올 경우 타입을 지정하여 불러올 수 있음
StringBuilder sql = new StringBuilder();
sql.append("select * from tb_member where mem_userid=? and mem_userpw=?");
Connection conn = Dbconn.getConnection();
PreparedSatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, mem_userid);
pstmt.setString(2, mem_userpw);
pstmt.executeQuery();
문제. 아이디, 비밀번호를 입력받아 로그인 프로그램을 작성해보자
아이디를 입력하세요 > apple
비밀번호를 입력하세요 > 1111
로그인 되었습니다. (아이디 또는 비밀번호를 확인하세요)
✔ DTO(Data Transfer Object)
- 계층간 데이터를 교환하기 위한 자바빈즈를 뜻함
- 순수한 데이터의 객체
- getter, setter 메소드를 가지고 있음
- DTO와 VO(value object)를 혼용해서 사용(Vo 읽기전용
✔ DAO(Data Access Object)
- 데이터베이스의 데이터에 접근하기 위해 생성하는 객체
- 데이터베이스에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용
- DB에 접근하여 데이터 CRUD(생성, 읽기, 갱신, 삭제) 작업을 하는 클래스
- 코드의 간결화 및 모듈화, 유지보수등의 목적을 위해 생성하여 사용하는 것이 권장
- DB를 사용하여 데이터의 조회 및 조작하는 기능을 전담하는 오브젝트
과제 //dao 이용할것
테이블 생성
학생 테이블
학번, 이름, 연락처, 성별, 주소, 등록날짜
- 학번은 primary key 등록
성적 테이블
학번, 국어점수, 수학점수, 영어점수, 등록날짜
- 학번은 foreign key로 등록
*********메뉴*******
1.학생등록
2.학생리스트
3.학생 수정
4.학생 삭제
5.성적 등록
성적을 등록할 학번을 입력하세요. 00000001
국어점수를 입력하세요
수학점수를 입력하세요
영어점수를 입력하세요
6.성적 보기
학번 이름 국어점수 수학점수 영어점수 총점 평균
7.프로그램종료
import java.sql.*;
import java.util.Scanner;
public class Jdbc1 {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1/aidev?userSSL=false";
String uid = "root";
String upw = "1234";
Scanner sc = new Scanner(System.in);
System.out.println("😀😀😀😀 회원가입 😀😀😀😀");
System.out.println("아이디를 입력하세요 > ");
String mem_userid = sc.next();
System.out.println("비밀번호를 입력하세요 >");
String mem_userpw = sc.next();
System.out.println("이름를 입력하세요 >");
String mem_name = sc.next();
System.out.println("휴대폰번호를 입력하세요 >");
String mem_hp = sc.next();
System.out.println("이메일를 입력하세요 >");
String mem_email = sc.next();
System.out.println("성별를 입력하세요 >");
String mem_gender = sc.next();
System.out.println("취미를 입력하세요 >");
String mem_hobby = sc.next();
System.out.println("주민번호앞자리를 입력하세요 >");
String mem_ssn1 = sc.next();
System.out.println("주민번호뒷자리를 입력하세요 >");
String mem_ssn2 = sc.next();
System.out.println("우편번호를 입력하세요 >");
String mem_zipcode = sc.next();
System.out.println("주소를 입력하세요 >");
String mem_address1= sc.next();
System.out.println("상세 주소를 입력하세요 >");
String mem_address2 = sc.next();
System.out.println("상세상세주소를 입력하세요 >");
String mem_address3 = sc.next();
String sql = "insert into tb_member (mem_userid, mem_userpw, mem_name,";
sql += "mem_hp, mem_email, mem_gender, mem_hobby, mem_ssn1, mem_ssn2,";
sql += "mem_zipcode, mem_address1, mem_address2, mem_address3) values (";
sql += "'" + mem_userid +"', '" + mem_userpw + "', '" + mem_name + "', ";
sql += "'" +mem_hp+ "', '" + mem_email + "', '"+ mem_gender +"', ";
sql += "'" +mem_hobby + "', '" + mem_ssn1 + "', '" + mem_ssn2 + "', ";
sql += "'" +mem_zipcode + "', '" + mem_address1 + "', '" + mem_address2 + "', ";
sql += "'" +mem_address3 + "')";
System.out.println(sql);
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //드라이버 등록
Connection conn = DriverManager.getConnection(url, uid, upw); // api 와 dbms연결
Statement stmt = conn.createStatement(); //총만들기
int result = stmt.executeUpdate(sql);
System.out.println(result);
if(result>=1) System.out.println("회원가입완료");
else System.out.println("회원가입실패");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
import java.sql.*;
import java.util.Scanner;
//문제. jdbc1을 참고하여 jdbc2 클래스에 회원가입 수정 프로그램을 작성해보자
// 1. 아이디를 기준으로 수정
// 2. sql 쿼리를 저장할 객체는 StringBuilder 사용
public class Jdbc2 {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1/aidev?userSSL=false";
String uid = "root";
String upw = "1234";
Scanner sc = new Scanner(System.in);
System.out.println("😀😀😀😀 회원정보 수정 😀😀😀😀");
System.out.println("수정하실 아이디를 입력하세요 > ");
String mem_userid = sc.next();
System.out.println("수정하실 비밀번호를 입력하세요 >");
String mem_userpw = sc.next();
System.out.println("수정하실 이름를 입력하세요 >");
String mem_name = sc.next();
System.out.println("수정하실 휴대폰번호를 입력하세요 >");
String mem_hp = sc.next();
System.out.println("수정하실 이메일를 입력하세요 >");
String mem_email = sc.next();
System.out.println("수정하실 성별를 입력하세요 >");
String mem_gender = sc.next();
System.out.println("수정하실 취미를 입력하세요 >");
String mem_hobby = sc.next();
System.out.println("수정하실 주민번호앞자리를 입력하세요 >");
String mem_ssn1 = sc.next();
System.out.println("수정하실 주민번호뒷자리를 입력하세요 >");
String mem_ssn2 = sc.next();
System.out.println("수정하실 우편번호를 입력하세요 >");
String mem_zipcode = sc.next();
System.out.println("수정하실 주소를 입력하세요 >");
String mem_address1= sc.next();
System.out.println("수정하실 상세 주소를 입력하세요 >");
String mem_address2 = sc.next();
System.out.println("수정하실 상세상세주소를 입력하세요 >");
String mem_address3 = sc.next();
//StringBuilder 참조변수 = new StringBuilder("문자열");
//참조변수.append(문자열).append("문자열")...
StringBuilder sql = new StringBuilder("update tb_member set ");
sql.append("mem_userid = ").append("'"+mem_userid+"', ");
sql.append("mem_userpw = ").append("'"+mem_userpw+"', ");
sql.append("mem_name = ").append("'"+mem_name+"', ");
sql.append("mem_hp = ").append("'"+mem_hp+"', ");
sql.append("mem_email = ").append("'"+mem_email+"', ");
sql.append("mem_gender = ").append("'"+mem_gender+"', ");
sql.append("mem_hobby = ").append("'"+mem_hobby+"', ");
sql.append("mem_ssn1 = ").append("'"+mem_ssn1+"', ");
sql.append("mem_ssn2 = ").append("'"+mem_ssn2+"', ");
sql.append("mem_zipcode = ").append("'"+mem_zipcode+"', ");
sql.append("mem_address1 = ").append("'"+mem_address1+"', ");
sql.append("mem_address2 = ").append("'"+mem_address2+"', ");
sql.append("mem_address3 = ").append("'"+mem_address3+"'");
sql.append("where mem_userid = ").append("'" +mem_userid+"'");
System.out.println(sql.toString());
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, uid, upw);
Statement stmt = conn.createStatement();
int result = stmt.executeUpdate(sql.toString());
System.out.println(result);
if(result>=1) System.out.println("회원정보수정완료");
else System.out.println("수정실패");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Dbconn {
private static Connection conn; //메모리에 계속 살아있을것임
public static Connection getConnection() throws SQLException, ClassNotFoundException {
String url = "jdbc:mysql://127.0.0.1/aidev?userSSL=false";
String uid = "root";
String upw = "1234";
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, uid, upw);
return conn;
}
}
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class Jdbc3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("회원탈퇴");
System.out.println("탈퇴할 아이디를 입력하세요 > ");
String mem_userid = sc.next();
StringBuilder sql = new StringBuilder();
sql.append("delete from tb_member ")
.append("where mem_userid='" + mem_userid + "'");
try {
//원래는 Connection conn = DriverManager.getConnection(url,uid,upw) 넣어줫는데
Connection conn = Dbconn.getConnection();
Statement stmt = conn.createStatement();
int result = stmt.executeUpdate(sql.toString());
if(result >=1) System.out.println("탈퇴되었습니다");
else System.out.println("탈퇴 실패했습니다");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Jdbc4 {
public static void main(String[] args) {
System.out.println("회원 목록");
StringBuilder sql = new StringBuilder();
sql.append("select * from tb_member");
try{
//원래 Connectino conn = DriverManager.getConnection(url,uid,upw)
Connection conn = Dbconn.getConnection(); //싱글톤 패턴
PreparedStatement pstmt = conn.prepareStatement(sql.toString()); //향상된 총?
ResultSet rs = pstmt.executeQuery(); //
rs.next(); //커서가 사실은 필드를 가리키고 잇어서 한칸 내려줘야함
//안해주면 필드를 가리켜서 에러남 / Before start of result set
int mem_idx = rs.getInt("mem_idx"); //커서가 존재해서 제일 위쪽 첫번째 행한테 잡혀있음
String mem_userid = rs.getString("mem_userid");
String mem_name = rs.getString("mem_name");
String mem_hp = rs.getString("mem_hp");
System.out.println("번호 : " + mem_idx);
System.out.println("아이디 : " + mem_userid);
System.out.println("이름 : " + mem_name);
System.out.println("휴대폰번호 : " + mem_hp);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
import java.sql.*;
public class Jdbc5 {
public static void main(String[] args) {
System.out.println("회원 목록");
StringBuilder sql = new StringBuilder();
sql.append("select * from tb_member");
try{
Connection conn = Dbconn.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
ResultSet rs = pstmt.executeQuery(); //쿼리가 담김
//필드값은 못빼오나?
while(rs.next()){
int mem_idx = rs.getInt("mem_idx"); //커서가 존재해서 제일 위쪽 첫번째 행한테 잡혀있음
String mem_userid = rs.getString("mem_userid");
String mem_name = rs.getString("mem_name");
String mem_hp = rs.getString("mem_hp");
System.out.println("번호:"+mem_idx+", 아이디:"+mem_userid+", 이름:"+mem_name+", 휴대폰번호:"+mem_hp);
};
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class Jdbc6 {
public static void main(String[] args) {
System.out.println("로그인");
System.out.print("아이디를 입력하세요 : ");
Scanner sc = new Scanner(System.in);
String id = sc.next();
System.out.print("비밀번호를 입력하세요 : ");
String pw = sc.next();
StringBuilder sql = new StringBuilder();
sql.append("select * from tb_member where mem_userid=? and mem_userpw=?");
//System.out.println(sql.toString());
try{
Connection conn = Dbconn.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,id);
pstmt.setString(2,pw);
ResultSet rs = pstmt.executeQuery();
if(rs.next()) System.out.println("로그인되었습니다");
else System.out.println("로그인에 실패하였습니다");
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
import java.sql.SQLException;
import java.util.Scanner;
public class VocaMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
VocaDAO vocaDAO = new VocaDAO();
while(true){
System.out.println("단어장");
System.out.println("원하는 번호를 선택하세요");
System.out.println("1.등록 2.리스트 3.검색 4.수정 5.삭제 6.종료");
int input = sc.nextInt();
if(input == 6){
System.out.println("프로그램을 종료합니다");
break;
}
try{
switch (input){
case 1:
vocaDAO.insert();
break;
case 2:
vocaDAO.list();
break;
case 3:
vocaDAO.search();
break;
case 4:
vocaDAO.edit();
break;
case 5:
vocaDAO.delete();
break;
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class VocaDAO {
public void insert() throws ClassNotFoundException, SQLException {
Scanner sc = new Scanner(System.in);
System.out.print("단어를 입력하세요 : ");
String eng = sc.next();
System.out.print("단어의 뜻을 입력하세요 : ");
sc.nextLine();
String kor = sc.nextLine();
System.out.print("레벨을 입력하세요 : ");
int level = sc.nextInt();
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("insert into tb_word (eng, kor, lev)")
.append(" values (?, ?, ?)");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,eng);
pstmt.setString(2,kor);
pstmt.setInt(3,level);
int result = pstmt.executeUpdate();
if(result >= 1) System.out.println("단어등록 성공!");
else System.out.println("등록 실패");
}
public void list() throws ClassNotFoundException, SQLException{
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("select eng, kor, lev, rdate from tb_word order by eng");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
String eng = rs.getString("eng");
String kor = rs.getString("kor");
int lev = rs.getInt("lev");
String rdate = rs.getString("rdate");
System.out.println(eng + ": " + kor+ "(" +lev+", " + rdate + ")");
}
}
public void search() throws ClassNotFoundException, SQLException{
Scanner sc = new Scanner(System.in);
System.out.println("검색할 단어를 입력하라 : ");
String word = sc.next();
boolean isFind = false;
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("select eng, kor, lev, rdate from tb_word where eng like ?");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,"%"+word+"%"); //와일드카드는 이쪽에다 써야함
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
isFind = true;
String eng = rs.getString("eng");
String kor = rs.getString("kor");
int lev = rs.getInt("lev");
String rdate = rs.getString("rdate");
System.out.println(eng + ": " + kor+ "(" +lev+", " + rdate + ")");
}
if(!isFind) System.out.println("찾는 단어가 없습니다");
}
public void edit()throws ClassNotFoundException, SQLException{
//수정할 단어를 입력하세요: apple
//단어의 뜻을 입력하세요: 사과
//레벨을 입력하세요: 2
Scanner sc = new Scanner(System.in);
System.out.print("수정할 단어를 입력하세요 : ");
String eng = sc.next();
System.out.print("단어의 뜻을 입력하세요 : ");
String kor = sc.next();
System.out.print("레벨을 입력하세요 : ");
int lev = sc.nextInt();
boolean isFind = false;
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("update tb_word set kor=?,lev=? where eng = ?");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,kor);
pstmt.setInt(2,lev);
pstmt.setString(3,eng);
int result = pstmt.executeUpdate();
if(result>0) System.out.println("수정성공");
else System.out.println("수정실패");
}
public void delete()throws ClassNotFoundException, SQLException{
//삭제할 단어를 입력하세요: apple
Scanner sc = new Scanner(System.in);
System.out.print("삭제할 단어를 입력하세요 : ");
String eng = sc.next();
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("delete from tb_word where eng = ?");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,eng);
int result = pstmt.executeUpdate();
if(result>0) System.out.println("삭제성공");
else System.out.println("삭제실패");
}
}
과제
import java.sql.*;
import java.util.*;
public class Assignment {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
assignDAO assignDAO = new assignDAO();
while(true){
System.out.println("*********메뉴*******");
System.out.println("" +
"1.학생등록\n" +
"2.학생리스트\n" +
"3.학새 수정\n" +
"4.학생 삭제\n" +
"5.성적 등록\n" +
"6.성적 보기\n" +
"7.프로그램 종료");
System.out.print("원하는 번호를 선택하세요 : ");
int input = sc.nextInt();
if(input == 7){
System.out.println("프로그램을 종료합니다");
break;
}
try{
switch (input){
case 1:
assignDAO.enroll_student();
break;
case 2:
assignDAO.list();
break;
case 3:
assignDAO.edit();
break;
case 4:
assignDAO.delete();
break;
case 5:
assignDAO.enroll_grade();
break;
case 6:
assignDAO.open_grade();
break;
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class assignDAO {
public void enroll_student() throws ClassNotFoundException, SQLException {
Scanner sc = new Scanner(System.in);
System.out.print("학번(8자리) : ");
String st_snum = sc.nextLine();
System.out.print("이름 : ");
String st_name = sc.nextLine();
System.out.print("휴대폰번호(-포함) : ");
String st_ph = sc.nextLine();
System.out.print("성별(남자 or 여자) : ");
String st_gender = sc.nextLine();
System.out.print("주소 : ");
String st_address = sc.nextLine();
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("insert into tb_student (st_snum, st_name, st_ph,st_gender,st_address)")
.append(" values (?, ?, ?, ?, ?)");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,st_snum);
pstmt.setString(2,st_name);
pstmt.setString(3,st_ph);
pstmt.setString(4,st_gender);
pstmt.setString(5,st_address);
int result = pstmt.executeUpdate();
if(result >= 1) System.out.println("등록 성공!");
else System.out.println("등록 실패");
}
public void list() throws ClassNotFoundException, SQLException{
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("select st_snum, st_name, st_ph,st_gender,st_address,st_regdate from tb_student order by st_name ");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
ResultSet rs = pstmt.executeQuery();
System.out.println("학번 이름 전화번호 성별 등록일 주소 ");
while(rs.next()){
String snum = rs.getString("st_snum");
String name = rs.getString("st_name");
String ph = rs.getString("st_ph");
String gender = rs.getString("st_gender");
String address = rs.getString("st_address");
String regdate = rs.getString("st_regdate");
System.out.println(snum+" "+name+" "+ph+" "+gender+" "+regdate+" "+address);
}
}
public void edit()throws ClassNotFoundException, SQLException{
Scanner sc = new Scanner(System.in);
System.out.print("수정할 학생이름을 입력하세요 : ");
String name = sc.next();
System.out.print("수정할 연락처를 입력하세요 : ");
String ph = sc.next();
System.out.print("수정할 성별을 입력하세요 : ");
String gender = sc.next();
System.out.print("수정할 주소을 입력하세요 : ");
String address = sc.next();
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("update tb_student set st_ph=?,st_gender=?,st_address=? where st_name = ?");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,ph);
pstmt.setString(2,gender);
pstmt.setString(3,address);
pstmt.setString(4,name);
int result = pstmt.executeUpdate();
if(result>0) System.out.println("수정성공");
else System.out.println("수정실패");
}
public void delete()throws ClassNotFoundException, SQLException{
//삭제할 단어를 입력하세요: apple
Scanner sc = new Scanner(System.in);
System.out.print("삭제할 학생을 입력하세요 : ");
String name = sc.next();
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("delete from tb_student where st_name = ?");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,name);
int result = pstmt.executeUpdate();
if(result>0) System.out.println("삭제성공");
else System.out.println("삭제실패");
}
public void enroll_grade()throws ClassNotFoundException, SQLException{
Scanner sc = new Scanner(System.in);
System.out.println("성적을 등록할 학번을 입력하세요(8자리) : ");
String snum = sc.next();
System.out.println("국어점수를 입력하세요 : ");
String kor = sc.next();
System.out.println("수학점수를 입력하세요 : ");
String math = sc.next();
System.out.println("영어점수를 입력하세요 : ");
String eng = sc.next();
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("insert into tb_grade(gr_snum,gr_kor,gr_math,gr_eng) values(?,?,?,?)");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1,snum);
pstmt.setString(2,kor);
pstmt.setString(3,math);
pstmt.setString(4,eng);
int result = pstmt.executeUpdate();
if(result>0) System.out.println("점수 등록 성공");
else System.out.println("점수등록 실패");
}
public void open_grade() throws ClassNotFoundException, SQLException{
boolean isFind = false;
Connection conn = Dbconn.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("select st_snum,st_name,gr_kor,gr_math,gr_eng,(gr_math+gr_math+gr_eng),(gr_math+gr_math+gr_eng)/3 from tb_student,tb_grade where st_snum = gr_snum");
PreparedStatement pstmt = conn.prepareStatement(sql.toString());
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
isFind = true;
String snum = rs.getString("st_snum");
String name = rs.getString("st_name");
String kor = rs.getString("gr_kor");
String math = rs.getString("gr_math");
String eng = rs.getString("gr_eng");
String sum = rs.getString("(gr_math+gr_math+gr_eng)");
String avg = rs.getString("(gr_math+gr_math+gr_eng)/3");
StringBuilder str = new StringBuilder();
str.append(snum+ " ")
.append(name+ " ")
.append(kor+ " ")
.append(math+ " ")
.append(eng+ " ")
.append(sum+" ")
.append(avg);
System.out.println(str);
}
if(!isFind) System.out.println("목록이 없습니다");
}
}
반응형
'서버&백엔드 > 🔥 JAVA' 카테고리의 다른 글
Java | 채팅프로그램 (0) | 2022.10.21 |
---|---|
Java,MySQL | 네트워크,버퍼,TCP/IP,소켓 (0) | 2022.10.19 |
Java,MySQL | JDBC,JDBC Driver,DBMS,Statement (0) | 2022.10.19 |
Java,MySQL | JDBC Driver설치,JDBC API연결,Statement (0) | 2022.10.19 |
학원1개월차 시험 (0) | 2022.10.17 |