次のようにコードをコピーします。
//ユーザー user の基本情報も USERINFO テーブルの 3 つの列です
パッケージログイン判定;
パブリック クラス ユーザー {
プライベート文字列名。
プライベート文字列ログイン名;
プライベート文字列loginpsw;
public String getName() {
名前を返します。
}
public void setName(文字列名) {
this.name = 名前;
}
public String getLoginname() {
ログイン名を返します。
}
public void setLoginname(String ログイン名) {
this.loginname = ログイン名;
}
public String getLoginpsw() {
ログインpswを返します;
}
public void setLoginpsw(String loginpsw) {
this.loginpsw = ログインpsw;
}
}
//登録とログインのための小さなコード ブロック
パッケージログイン判定;
java.util.Scannerをインポートします。
パブリック クラス {
パブリック静的ユーザー getUser(){
ユーザー u = 新しいユーザー();
スキャナー sc = 新しいスキャナー(System.in);
System.out.println("ログイン名を入力してください");
u.setLoginname(sc.nextLine());
System.out.println("パスワードを入力してください");
u.setLoginpsw(sc.nextLine());
あなたを返してください。
}
public static User registerUser(){
ユーザー u = 新しいユーザー();
スキャナー sc = 新しいスキャナー(System.in);
System.out.println("ユーザー名を登録してください");
u.setName(sc.nextLine());
System.out.println("ログイン名を登録してください");
u.setLoginname(sc.nextLine());
System.out.println("パスワードを登録してください");
u.setLoginpsw(sc.nextLine());
あなたを返してください。
}
}
//ログイン時にログイン名とパスワードが正しいかどうかを確認し、正しい場合はユーザー名を返します。
パッケージログイン判定;
java.sql.Connectionをインポートします。
java.sql.DriverManagerをインポートします。
インポートjava.sql.PreparedStatement;
インポートjava.sql.ResultSet;
インポート java.sql.SQLException;
パブリック クラス チェック {
public static void checkUser(ユーザーu)
{
試す {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
文字列 URL = "jdbc:oracle:thin:@localhost:1521:orcl";
文字列ユーザー = "スコット";
文字列パスワード = "tiger";
接続 conn = null;
結果セット rs = null;
PreparedStatement 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();
while(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()+"ログイン");
}
}
}
//登録インターフェースでは、ログイン名が重複しているかどうかを判断する必要があります。重複している場合、登録は失敗します。ちょっと質問があったのでコメントをつけさせていただきました。
パッケージログイン判定;
java.sql.Connectionをインポートします。
java.sql.DriverManagerをインポートします。
インポートjava.sql.PreparedStatement;
インポートjava.sql.ResultSet;
インポート java.sql.SQLException;
java.sql.Statementをインポートします。
パブリック クラス レジスタ {
public static void registerUser(User u){
試す {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
文字列 URL = "jdbc:oracle:thin:@localhost:1521:orcl";
文字列ユーザー = "スコット";
文字列パスワード = "tiger";
接続 conn = null;
String sql = "USERINFO 値に挿入(?,?,?)";
PreparedStatement pst = null;
//ログイン名がすでに存在するかどうかを判断します
ステートメント s = null;
結果セット rs = null;
文字列 sql_ck = "ユーザー情報からログイン名を選択";
試す {
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.close();
conn.close();
} キャッチ (SQLException e) {
e.printStackTrace();
}
}
}
}
//メインインターフェース//
//データベース内のテーブル構造はこんな感じ
//name (ユーザー名、表示に使用),
//loginname (ログイン名、ログイン時に入力したID)
//loginpsw (ログイン時に入力するパスワード)
パッケージログイン判定;
java.util.Scannerをインポートします。
パブリック クラス テスト {
public static void main(String[] args) {
インチョス = 0;
スキャナー sc = 新しいスキャナー(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;
}
}
}