티스토리 뷰
서버단 jsp -2 (정보입력/ 정보조회)
MVC
- Model (Bean.java 클래스)
- View (selectMain.html)
- Controller (~info.jsp)
구조

정보 입력후 전송 누르면

DB값 조회하기 - DB(Mysql)로 값전송됨
(좌측-학생정보 조회/ 우측 DB-Mysql)

-------------------------------------------------------------------------------------------------------------------
우선 src폴더에 패키지생성후 빈즈클래스를 하나 만들어준다
public class Bean {
private int stNum;
private int mathScore;
private int englishScore;
//DB로 정보 입력
public void insertDB(Bean b){
Connection conn=null
Statement stmt = null
try{
//드라이버 연결
Class.forName("com.mysql.jdbc.Driver");
//jspdb는 DB명 // mysql-> user는 root 비밀번호는 1234
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/studentDB","root","1234");
if(conn==null)
throw new Exception("데이터베이스 연결 실패");
//연결된 상태를 stmt로
stmt=conn.createStatement();
//연결된상태로 DB로 입력(쿼리-insert) into 다음은 테이블명 적어주기 (studentScore)
stmt.executeUpdate("insert into studentScore
values('"+b.getStNum()+"','"+b.getMathScore()+"','"+b.getEnglishScore()+"');");
} catch (Exception e) {
e.printStackTrace();
}finally{//다썻으면 닫아줌
try{
stmt.close();
}catch(Exception ignored){
}
try{
conn.close();
}catch(Exception ignored){
}
}
}
----------------------------------------------------------------------------
이번에는 DB에서 값을 불러오는 getDB 부분
//DB정보 불러옴 (매개변수로 벡터를 받음 -> 벡터는 객체를 요소로 받으니
//해당벡터-객체들에 들어있는 값(정보)들을 DB에서 얻음)
public void getDB(Vector<Bean> a){
Connection conn=null // 연결관리
Statement stmt = null //연결된상태관리
try{
//드라이버 연결
Class.forName("com.mysql.jdbc.Driver");
//jspdb는 DB명 // mysql-> user는 root 비밀번호는 1234
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/studentDB","root","1234");
if(conn==null)
throw new Exception("데이터베이스 연결 실패");
//연결된 상태를 stmt로
stmt=conn.createStatement();
//연결 결과 관리 rs
ResultSet rs = stmt.executeQuery("select * from studentScore;");
if(!rs.next())//코드에 해당하는 정보가 없을때
throw new Exception("studentScore 테이블에 해당하는 데이터가 없습니다");
int i=0;
while(rs.next()){
//while문 바로위 rs.next()실행시 첫번째 인자를 넥스트해서 읽지 못하므로 previous이전으로이동
if(i==0)
rs.previous();
//초기에 DB에 들어있는 정보를 가져와서 변수로 저장
int stNum= rs.getInt("stNum");
int mathScore = rs.getInt("math");
int englishScore = rs.getInt("english");
//db값 불러와서 벡터로 객체단위로 하나씩 삽입
a.add(new Bean(stNum,mathScore,englishScore));
//System.out.println(stNum+","+mathScore+","+englishScore);
i++;
}
/*
rs.next에서 next()함수는 Boolean타입으로 첫 번째 row를 읽고 값이 있으면 true 다음row에 값이 없으
면 false를 리턴한다
previous() 는 이전 레코드로 이동하는 함수인데 previous()를 써주지 않으면 인덱스 가 0,1,2순으로 시
작한다면 1부터 찍기 때문에 previous()를 써서 0번째인덱스부터 즉, 처음부터 출력하기위해 써주자
rs는 결과셋을 갖고있는 놈인데 쿼리 결과를 보기위해 rs.getString/rs.getInt(“필드명”)으로 결과를 볼수있는데 먼저 그럴러면 rs.next()해서 커서를 데이터가 있는곳으로 움직여준다.(이때 rs의 위치는 첫 번째
데이터의 다음데이터에 커서가 있다는 사실!)
다음데이터를(다음행의데이터를 가져오려면) rs.next해준다. (즉, next()는 커서를 다음레코드로 이동한
다 previous는 이전데이타로 커서를 옮겨준다)
(rs의 첫위치가 rs가 갖고있는 데이터의 첫 번째가아니라 첫 번째의 다음을 가리킨다는 사실! 때문에
previous를 사용해서 첫 번째부터 출력)
*/
----------------------------------------------------------------------------
'it' 카테고리의 다른 글
| JSP 내장객체 (0) | 2023.03.31 |
|---|---|
| 데이터베이스 테이블 구조 설계 (3가지방법) (0) | 2023.03.30 |
| String 메소드 / String함수 (0) | 2023.03.28 |
| 스프링 개발환경구축 (6-3) SVN 용어 요약 (0) | 2023.03.27 |
| INDEX적용 - 인덱스를 사용하지 못하는 경우 (0) | 2023.03.26 |
