티스토리 뷰

반응형

서버단 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로 인서트함수 생성 -> (DB로연결하는 정보 삽입하는 함수 하나 만들어준다) insertDB

//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를 사용해서 첫 번째부터 출력)

*/

----------------------------------------------------------------------------

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함