N스크린하이브리드앱과정/JSP:Model-1

[5주][1일][5~8th] mysql 실습(이어서), mysql을 java(이클립스)와 연동하기

광천스러움 2013. 8. 12. 17:39

mysql 실습, 그리고 자바와 연동하기 

☆ sql문 실습

* 회원수정
update 테이블이름
set 바꿀열이름=값, 열이름=값
where 조건열이름=값;

 

ex1) num 3인 사람의 name 수정
update student
set name = 'lee'
where num=3;

 

ex2) name kim인 사람의 num를 5로 수정
update student
set name=5
where name='kim';

 

 

* 회원삭제
delete from 테이블이름
where 조건열이름=값;

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

delete from student
where num=5;

 

ex1) name이 'lee'사람 삭제
delete from student
where name = 'lee';

 

사용자 생성(계정 만들기)
grant
select, insert, update, delete, create, alter, drop
on jspbeginner.* to 'jspid'@'localhost'
identified by 'jsppass';

 

grant
select, insert, update, delete, create, alter, drop
on jspbeginner.* to 'jspid'@'%'
identified by 'jsppass';

 

만들어진 id로 들어가기
mysql -u jspid -p jspid id으로
jsppass 패스워드

 

use jspbeginner 데이터베이스 선택

 

* member 테이블 만들기

create table member(
 id varchar(12) not null primary key,
 passwd varchar(12) not null,
 name varchar(12) not null,
 reg_date datetime not null
);

 -> "not null"의 뜻은 id를 비롯한 변수 4개가 하나라도 지정이 안될 경우 오류가 발생한다는 뜻.

 

show tables; 테이블 보기

desc member; member 테이블의 속성 보기

 

* sql문 : 폼에서 회원가입한 것을 확인할 때

set names euckr; 콘솔 창에서 한글 보이게 하기

 


☆ mysql을 자바와 연동하기

* 순서

1. jsp와 mysql 연결 프로그램 설치
  ※ JDBC: Java DataBase Connectivity : 자바-mysql을 연결하는 프로그램

 

2. mysql-connector-java-5.1.19-bin.jar 를 설치한다.

 

3. lib에 복사하기

 

 

3-1. DB폴더 만들기

 


4. 이클립스에서 jsp 코딩하기

* 단계

1단계 드라이버로더
2단계 디비연결(디비주소,아이디,비밀번호) 연결객체 - 연결정보만 저장하고있는 공간
3단계 sql문 생성
4단계 실행 insert update delete => 저장 select
5단계 저장 -> 처리 select

 

 (1) driverTest.jsp

<%
Connection con = null;
String url="jdbc:mysql://localhost:3306/jspbeginner";
String user="jspid";
String pwd="jsppass";
try{
 //1단계 드라이버로더
 Class.forName("com.mysql.jdbc.Driver");
 //2단계 연결
 con = DriverManager.getConnection(url, user, pwd);
 out.println("연결성공");
}catch(Exception e){
 e.printStackTrace();
}
%>

 

 (2-1) insertForm.jsp

<form action="insertPro.jsp" method="post">
아이디: <input type="text" name="id"><br>
패스워드: <input type="password" name="passwd"><br>
이름: <input type="text" name="name"><br>
<input type="submit" value="전송"><br>
</form>

 

 (2-2) insertPro.jsp ☜ 서버와 연동해서 회원가입하기

<%
//한글처리
//id passwd name 가져오기
request.setCharacterEncoding("utf-8");

String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
String name = request.getParameter("name");

//시스템의 현재 날짜와 시간을 담아줌
Timestamp register = new Timestamp(System.currentTimeMillis());

Connection con = null;
String url="jdbc:mysql://localhost:3306/jspbeginner";
String user="jspid";
String pwd="jsppass";
PreparedStatement pstmt=null; //sql문장을 먼저 미리 쓰겠다
String sql="";
try{
 //1단계 드라이버 로더
 Class.forName("com.mysql.jdbc.Driver");
 //2단계 디비연결
 con=DriverManager.getConnection(url,user,pwd);
 //3단계 sql문 생성 Statement PreparedStatement CallableStatement
 //PreparedStatement CallableStatement
 sql="insert into member(id,passwd,name,reg_date) values(?,?,?,?)";
 pstmt=con.prepareStatement(sql);
 pstmt.setString(1, id);
 pstmt.setString(2, passwd);
 pstmt.setString(3, name);
 pstmt.setTimestamp(4, register);
 //4단계 실행
 pstmt.executeUpdate(); //insert,update,delete
 out.println("회원가입성공");
}catch(Exception e){
 e.printStackTrace();
}finally{
 if(pstmt!=null)try{pstmt.close();}catch(SQLException ex){}
 if(con!=null)try{con.close();}catch(SQLException ex){}
}
%>

 

 (3) select.jsp ☜ 가입된 내용을 GUI창에서 보여주기

<h1>회원조회</h1>
<table border="1">
<tr><td>아이디</td><td>패스워드</td><td>이름</td><td>가입일자</td></tr>
<%
request.setCharacterEncoding("utf-8");

Connection con = null;
String url="jdbc:mysql://localhost:3306/jspbeginner";
String user="jspid";
String pwd="jsppass";
String sql="";
PreparedStatement pstmt=null; //sql문장을 먼저 미리 쓰겠다
ResultSet rs = null;
try{
 // 1단계 드라이버로더
 Class.forName("com.mysql.jdbc.Driver");
 // 2단계 디비연결
 con=DriverManager.getConnection(url,user,pwd);
 // 3단계 sql구문 생성
 sql="select * from member";
 pstmt = con.prepareStatement(sql);
 // 4단계 실행=> rs저장
 rs=pstmt.executeQuery();
 // 5단계 rs => 테이블 출력
 while(rs.next()){ //첫번째행
  String id = rs.getString("id"); //테이블열이름 1
  String passwd = rs.getString("passwd");
  String name = rs.getString("name");
  Timestamp register = rs.getTimestamp("reg_date");
  %>
  <tr><td><%=id %></td><td><%=passwd %></td><td><%=name %></td><td><%=register %></td></tr><%
 } 
}catch(Exception e){
 e.printStackTrace();
}finally{
 if(rs!=null) try{rs.close();}catch(SQLException ex){}
 if(pstmt!=null)try{pstmt.close();}catch(SQLException ex){}
 if(con!=null)try{con.close();}catch(SQLException ex){}
}
%>
</table>

 

결과

 

 


mysql> jspbeginner 데이터베이스 안에 member라는 테이블이 만들어진 것을 콘솔창에서 볼 수 있다.


- 이름이 깨져서 나오는 현상이 생겨, set names euckr; 를 사용해서 한글이 보이게끔 하였다.