다음과 같이 코드 코드를 복사합니다.
//사용자 사용자의 기본 정보도 USERINFO 테이블의 3개 열에 있습니다.
패키지 로그인 판단;
공개 클래스 사용자 {
개인 문자열 이름;
개인 문자열 로그인 이름;
개인 문자열 loginpsw;
공개 문자열 getName() {
이름 반환;
}
public void setName(문자열 이름) {
this.name = 이름;
}
공개 문자열 getLoginname() {
로그인 이름을 반환합니다.
}
공공 무효 setLoginname(문자열 로그인 이름) {
this.loginname = 로그인 이름;
}
공개 문자열 getLoginpsw() {
로그인 반환psw;
}
공공 무효 setLoginpsw(문자열 loginpsw) {
this.loginpsw = 로그인psw;
}
}
//등록 및 로그인을 위한 작은 코드 블록
패키지 로그인 판단;
java.util.Scanner 가져오기;
공개 수업 {
공개 정적 사용자 getUser(){
사용자 u = 새로운 사용자();
Scanner sc = new Scanner(System.in);
System.out.println("귀하의 로그인 이름을 입력해주세요");
u.setLoginname(sc.nextLine());
System.out.println("비밀번호를 입력해주세요");
u.setLoginpsw(sc.nextLine());
당신을 돌려 보내십시오;
}
공개 정적 사용자 등록 사용자(){
사용자 u = 새로운 사용자();
Scanner sc = new Scanner(System.in);
System.out.println("사용자 이름을 등록해주세요");
u.setName(sc.nextLine());
System.out.println("귀하의 로그인 이름을 등록해주세요");
u.setLoginname(sc.nextLine());
System.out.println("비밀번호를 등록해주세요");
u.setLoginpsw(sc.nextLine());
당신을 돌려 보내십시오;
}
}
//로그인할 때 로그인 이름과 비밀번호가 맞는지 확인하세요. 맞다면 사용자 이름을 반환하세요.
패키지 로그인 판단;
import java.sql.Connection;
java.sql.DriverManager 가져오기;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
공개 클래스 확인 {
공개 정적 무효 checkUser(사용자 u)
{
노력하다 {
Class.forName("oracle.jdbc.driver.OracleDriver");
} 잡기(ClassNotFoundException e) {
e.printStackTrace();
}
문자열 url = "jdbc:oracle:thin:@localhost:1521:orcl";
문자열 사용자 = "스콧";
문자열 비밀번호 = "호랑이";
연결 연결 = null;
결과 집합 rs = null;
준비된 진술 pst = null;
String sql = "loginname = ? 및 loginpsw = ?인 USERINFO에서 이름을 선택하십시오. ";
노력하다 {
conn = DriverManager.getConnection(url, 사용자, 비밀번호);
pst = conn.prepareStatement(sql);
pst.setString(1, u.getLoginname());
pst.setString(2,u.getLoginpsw());
rs = pst.executeQuery();
동안(rs.next()){
u.setName(rs.getString(1));
}
} 잡기(SQLException e) {
e.printStackTrace();
}마지막으로{
노력하다 {
rs.close();
pst.close();
conn.close();
} 잡기(SQLException e) {
e.printStackTrace();
}
}
if(u.getName() == null || u.getName().isEmpty()){
System.out.println("로그인 실패");
}또 다른{
System.out.println("환영합니다"+u.getName()+"로그인");
}
}
}
//등록 인터페이스에서 로그인 이름이 중복되는지 확인해야 합니다. 중복된 경우 등록이 실패합니다. 질문이 좀 있어서 댓글로 표시해두었습니다.
패키지 로그인 판단;
import java.sql.Connection;
java.sql.DriverManager 가져오기;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
공개 클래스 등록 {
공개 정적 무효 등록 사용자(사용자 u){
노력하다 {
Class.forName("oracle.jdbc.driver.OracleDriver");
} 잡기(ClassNotFoundException e) {
e.printStackTrace();
}
문자열 url = "jdbc:oracle:thin:@localhost:1521:orcl";
문자열 사용자 = "스콧";
문자열 비밀번호 = "호랑이";
연결 연결 = null;
String sql = "USERINFO 값(?,?,?)에 삽입";
준비된 진술 pst = null;
//로그인 이름이 이미 존재하는지 확인
명령문 s = null;
결과 집합 rs = null;
String sql_ck = "USERINFO에서 LOGINNAME을 선택하세요";
노력하다 {
conn = DriverManager.getConnection(url, 사용자, 비밀번호);
pst = conn.prepareStatement(sql);
pst.setString(1, u.getName());
pst.setString(2, u.getLoginname());
pst.setString(3, u.getLoginpsw());
//로그인 이름이 이미 존재하는지 확인
s = conn.createStatement();
rs = s.executeQuery(sql_ck);
while(rs.next()){//rs.getString(2)을 사용할 때 잘못된 인덱스가 표시되는 이유는 무엇입니까?
if( rs.getString("LOGINNAME").equals(u.getLoginname()) ){
System.out.println("로그인 이름이 이미 존재합니다. 등록에 실패했습니다.");
부서지다;
}또 다른{
pst.executeUpdate();
System.out.println("등록 성공");
부서지다;
}
}
} 잡기(SQLException e) {
e.printStackTrace();
}마지막으로{
노력하다 {
rs.close();
pst.close();
s.닫기();
conn.close();
} 잡기(SQLException e) {
e.printStackTrace();
}
}
}
}
//메인 인터페이스//
//데이터베이스의 테이블 구조는 다음과 같습니다.
//name(사용자 이름, 표시에 사용됨),
//loginname (로그인 이름, 로그인 시 입력한 ID)
//loginpsw (로그인 시 입력한 비밀번호)
패키지 로그인 판단;
java.util.Scanner 가져오기;
공개 클래스 테스트 {
공개 정적 무효 메인(String[] args) {
인초 = 0;
Scanner sc = new Scanner(System.in);
System.out.println("/t/t로그인하려면 1을 누르세요/t/t등록하려면 2를 누르세요");
chos = sc.nextInt();
스위치(초){
사례 1: Check.checkUser(In.getUser());break;
사례 2: Register.registUser(In.registerUser());break;
기본값: System.out.println("올바른 선택을 입력하세요.");break;
}
}
}