2023-03-29

 

INSERT 쿼리 활용

  • 이전에는 DBMS 구축 및 DB테이블을 생성 하였다
  • insert 쿼리를 활용하여 사용자로부터 데이터를 입력받아 db로 insert하려고 한다

 

1.사전에 id, pw, level, name, email 을 받을 수 있게 form을 만들어 두었다(m_insert_form.jsp)

<form action="<%= request.getContextPath() %>/minsert/m_insert_action.jsp" method="post">
<table border="1">
<tr>
	<td>아이디</td>
	<td><input type="text" name="m_id" size="20"></td>
<tr>
<tr>
	<td>암호</td>
	<td><input type="text" name="m_pw" size="20"></td>
<tr>
<tr>
	<td>권한</td>
	<td><input type="text" name="m_level" size="20"></td>
<tr>
<tr>
	<td>이름</td>
	<td><input type="text" name="m_name" size="20"></td>
<tr>
<tr>
	<td>이메일</td>
	<td><input type="text" name="m_email" size="20"></td>
<tr>
<tr>
	<td colspan="4"><input type="submit" value="회원가입버튼"></td>
</tr>
</table>
</form>

 

2.form에서 넘어온 데이터를 받을 수 있게 만들어준다(m_insert_form.jsp)

//클래스 와 인터페이스를 improt 해준다
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.SQLException" %>

<% //<--jsp에서 자바코드는 <%%>안에 넣어준다
request.setCharacterEncoding("euc-kr");		//post방식 한글인코딩
String m_id = request.getParameter("m_id");
String m_pw = request.getParameter("m_pw");
String m_level = request.getParameter("m_level");
String m_name = request.getParameter("m_name");
String m_email = request.getParameter("m_email");

//데이터가 잘 이동하는지 확인하는 것이 중요하다
System.out.println(m_id + "<-- m_id /minsert/m_insert_action.jsp");
System.out.println(m_pw + "<-- m_pw /minsert/m_insert_action.jsp");
System.out.println(m_level + "<-- m_level /minsert/m_insert_action.jsp");
System.out.println(m_name + "<-- m_name /minsert/m_insert_action.jsp");
System.out.println(m_email + "<-- m_email /minsert/m_insert_action.jsp");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
PreparedStatement pstmt = null;
String jdbcDriver = "jdbc:mysql://localhost:3306/dev47db?" +
		"useUnicode=true&characterEncoding=euckr";
String dbUser = "dev47id";
String dbPass = "dev47pw";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
System.out.println(conn + "<-- conn");
pstmt = conn.prepareStatement("INSERT INTO tb_member VALUES (?, ?, ?, ?, ?)");
System.out.println(pstmt + "<-- pstmt 1");
pstmt.setString(1, m_id);
pstmt.setString(2, m_pw);
pstmt.setString(3, m_level);
pstmt.setString(4, m_name);
pstmt.setString(5, m_email);
System.out.println(pstmt + "<-- pstmt 2");
int result = pstmt.executeUpdate();
System.out.println(result + "<-- result");
pstmt.close();
conn.close();

//리다이렉트
response.sendRedirect(request.getContextPath()+"/msearch/m_search_list.jsp");
%>

JDBC(Java Database Connectivity) 프로그램 순서 7단계

 

1.MySQL 드라이버 로딩

Class.forName("com.mysql.jdbc.Driver");

 

2.connection객체로 DB 연결 - ip, port넘버, db접속ID, db접속PW, db명

//데이터타입 객체잠조변수 초기화
Connection conn = null;

//jbdc DB연결 -> //localhost : port번호/DB명
String jdbcDriver = "jdbc:mysql://localhost:3306/dev47db?" +
		"useUnicode=true&characterEncoding=euckr";
String dbUser = "dev47id";
String dbPass = "dev47pw";

/*
DriverManager : Java에서 제공하는 JDBC 드라이버 매니저 클래스로 데이터베이스 드라이버를 등록,
등록된 드라이버 중에서 적절한 드라이버를 선택하여 Connection 객체를 반환한다
*/
//반환된 Connection 객체를 이용하여 데이터베이스에 대한 쿼리를 실행하고, 결과를 받아올 수 있다

conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);

 

3. Query실행을 위한 준비(statement 또는 PreparedStatement객체생성)

//데이터타입 객체참조변수 초기화
PreparedStatement pstmt = null;

//insert 쿼리문에 index와 변수 값을 통해 전달하기
//pstmt.setString(index, 변수 값);
//사용자가 입력하는 값이 매번 다르기 때문에 변수를 통해 전달한다
pstmt = conn.prepareStindexment ("INSERT INTO tb_member VALUES (?, ?, ?, ?, ?)");
pstmt.setString(1, m_id;
pstmt.setString(2, m_pw);
pstmt.setString(3, m_level);
pstmt.setString(4, m_name);
pstmt.setString(5, m_email);

 

4.Query 실행

//executeUpdate() : db에서 데이터를 insert, update, delete 하는 sql쿼리문 실행
//int 값으로 받는 이유 : 행의 수를 반환하기 때문(현재 코드에선 리턴 값 : 5)
int result = pstmt.executeUpdate();

 

5.Query 실행 결과 사용(insert, update, delete의 경우 생략이 가능하다)

  • insert 쿼리라서 생략

 

6.Statement 또는 PreparedStatement 객체 종료

pstmt.close();

 

7.DB연결종료 (connection 객체)

conn.close();

 

'MYSQL' 카테고리의 다른 글

delete 쿼리 활용  (0) 2023.04.17
update 쿼리 활용  (0) 2023.04.17
select 쿼리 활용  (0) 2023.04.17
DBMS 구축 & DB테이블 생성  (0) 2023.04.16
MySQL 설치 & HeidiSQL 설치  (0) 2023.04.16