자바로 PC방 프로그램만들기

2초식. 네트워크장 로그인초식

로그인 만들기를 통해서 자바에서 SQL을 통한 DB접속을 배움.

예.. 회원가입보다 일단은 더 쉬운게 로그인 만들기 입니다.

오늘 만들 로그인은 단순히 애플리케이션뿐만 아니라, 웹에서도 그대로 쓸 수 있을 정도로 그 활용도가 높다고 보여지며

모든 네트워크 DB처리의 기본이라 할 수 있습니다.

(단 보안설정에 따라 더 복잡해질 수 있습니다.)

 

일단 오늘은 로그인초식을 배우기앞서 준비지식이 세가지 있습니다.

1. 자바에서 mysql 에 접근하기위한 jdbc설정(라이브러리 추가)

2. 이 프로그램에서는 특별히 접속커넥션관리를 위한 외부라이브러리를 씁니다. dbconnectionMGR 을 씁니다.

3. 자바 데이터베이스 접속개념을 잠시 살펴보고 

로그인 실습으로 가보겠습니다. 

동영상

파워포인트자료

1. 준비물들

다운로드 주소 http://adunhansa.tistory.com/156

1. jdbc API 추가하기

프로젝트 -  properties – java build path -> libraries -> add jars

검색어 - mysql connector

 

2. 코넥션관리 라이브러리 - DBConnectionMgr

을 열어서 db접속 주소, 아이디, 비밀번호 설정

검색어 

3. 자바 네트워크 접속 방법

connection -> preparedStatement -> (셀렉트문의 경우) ResultSet을 받아옴 -> 코넥션닫기

자세한 것은 실제 영상을 보면서 작업합니다.

 

소스

package test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import assets.DBConnectionMgr;

public class LoginTest {
    public static void main(String[] args) {
		
		boolean test = loginTest("test", "1234");
		
		System.out.println("로그인 결과 :"+test);
	}

	public static boolean loginTest(String id, String password) {
		boolean flag = false;

		DBConnectionMgr pool = DBConnectionMgr.getInstance();

		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		String getPass = null;

		try {
			con = pool.getConnection();

			// 문장생성
			sql = "select password from member_test where id=?";

			// 문장연결, 열차준비
			pstmt = con.prepareStatement(sql);

			// 빈칸채워주기
			pstmt.setString(1, id);

			// 실행, 열차출바알~!
			rs = pstmt.executeQuery();

			if (rs.next()) {
				// 패스워드를 읽어온다.
				getPass = rs.getString("password");

				// 데이터베이스에서 읽어온 문자열과 사용자가 입력한 비밀번호가 같을 경우에는
				// 참을 반환을 하겠죠?
				if (getPass.equals(password)) {
					System.out.println("받아온 비밀번호 : " + getPass);
					flag = true;
				}
			}

		} catch (Exception e) {
			//원래 예외처리는 크게 잡으면 안되고, 따로 처리가 되어야 합니다.
			e.printStackTrace();

		} finally {

			// 자원반납
			pool.freeConnection(con, pstmt, rs);
		}

		// 결과값 반납
		return flag;
	}
}

 

 

 

테스트를 위해서 소스가 허점이 좀 있습니다. 예외처리나 로그인의 보안처리등등
지금은 로그인의 흐름만 알기 위한 것이므로, 개선의 여지가 있다는 것만 알아둡시다.

 

댓글

댓글 본문
  1. 김휘동
    혹시 문제 해결 하셨나요 저도 같은 오류가 떠서 문제입니다 해결 되면 chirs9921@naver.com으로 메일 보내 주실수 있나요??
    대화보기
    • 김휘동
      로그인 결과: false로 나오는데 뭐가 문제인지를 잘 모르겠어요
    • java.sql.SQLException: Communications link failure

      The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.로그인 결과 :false

      at assets.DBConnectionMgr.createConnection(DBConnectionMgr.java:268)
      at assets.DBConnectionMgr.getConnection(DBConnectionMgr.java:157)
      at test.LoginTest.loginTest(LoginTest.java:29)
      at test.LoginTest.main(LoginTest.java:12)

      콘솔에 이렇게 뜨는데 어떻게 해야하는지 자세히좀 알려주세요 부탁드립니다.
    • 김레걸
      감사합니다 잘봣어요 ㅎㅎ
    • 이건 그냥 간단한 소스네요

      실제로 저렇게 썼다가는 sql인젝터 그냥 맞아버리겟쬬?
    • ljy644
      mysql-connector-java-5.1.21-bin.jar다운로듯한것이 파일평태로되어 libaries에 넣지 못하고잇는데 어떻게 해결해야하나요?
    • 대장너구리
      친구에게 배우는 기분이 듭니다.
      재밌어요!