Copiez le code comme suit :
// Les informations de base de l'utilisateur sont également constituées de trois colonnes dans la table USERINFO.
jugement de connexion au package ;
Utilisateur de classe publique {
nom de chaîne privé ;
nom de connexion de chaîne privée ;
chaîne privée loginpsw ;
chaîne publique getName() {
renvoyer le nom ;
}
public void setName (nom de la chaîne) {
this.name = nom ;
}
chaîne publique getLoginname() {
renvoie le nom de connexion ;
}
public void setLoginname (String nom de connexion) {
this.loginname = nom de connexion ;
}
chaîne publique getLoginpsw() {
retourner loginpsw ;
}
public void setLoginpsw(String loginpsw) {
this.loginpsw = loginpsw;
}
}
//Petit bloc de code pour l'inscription et la connexion
jugement de connexion au package ;
importer java.util.Scanner ;
classe publique Dans {
Utilisateur statique public getUser(){
Utilisateur u = nouvel utilisateur ();
Scanner sc = nouveau scanner (System.in);
System.out.println("Veuillez entrer votre nom de connexion");
u.setLoginname(sc.nextLine());
System.out.println("Veuillez entrer votre mot de passe");
u.setLoginpsw(sc.nextLine());
reviens-toi;
}
public statique Utilisateur RegisterUser(){
Utilisateur u = nouvel utilisateur ();
Scanner sc = nouveau scanner (System.in);
System.out.println("Veuillez enregistrer le nom d'utilisateur");
u.setName(sc.nextLine());
System.out.println("Veuillez enregistrer votre nom de connexion");
u.setLoginname(sc.nextLine());
System.out.println("Veuillez enregistrer un mot de passe");
u.setLoginpsw(sc.nextLine());
reviens-toi;
}
}
// Vérifiez lors de la connexion pour déterminer si le nom de connexion et le mot de passe sont corrects. S'ils sont corrects, renvoyez le nom d'utilisateur.
jugement de connexion au package ;
importer java.sql.Connection ;
importer java.sql.DriverManager ;
importer java.sql.PreparedStatement ;
importer java.sql.ResultSet ;
importer java.sql.SQLException ;
classe publique Vérifier {
contrôle d'annulation statique publicUtilisateur (Utilisateur u)
{
essayer {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Chaîne url = "jdbc:oracle:thin:@localhost:1521:orcl";
Utilisateur de chaîne = "scott" ;
Mot de passe de chaîne = "tigre" ;
Connexion de connexion = null ;
ResultSet rs = nul ;
PreparedStatement pst = null ;
String sql = "Sélectionnez le nom dans USERINFO où loginname = ? et loginpsw = ? ";
essayer {
conn = DriverManager.getConnection (url, utilisateur, mot de passe);
pst = conn.prepareStatement(sql);
pst.setString(1, u.getLoginname());
pst.setString(2,u.getLoginpsw());
rs = pst.executeQuery();
tandis que(rs.next()){
u.setName(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}enfin{
essayer {
rs.close();
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(u.getName() == null || u.getName().isEmpty()){
System.out.println("Échec de la connexion");
}autre{
System.out.println("Bienvenue"+u.getName()+"Connexion");
}
}
}
//Dans l'interface d'enregistrement, il est nécessaire de déterminer si le nom de connexion est dupliqué. S'il y a des doublons, l'enregistrement échouera. J'ai une petite question, je l'ai marquée de commentaires.
jugement de connexion au package ;
importer java.sql.Connection ;
importer java.sql.DriverManager ;
importer java.sql.PreparedStatement ;
importer java.sql.ResultSet ;
importer java.sql.SQLException ;
importer java.sql.Statement ;
Registre de classe publique {
public static void registerUser (Utilisateur u) {
essayer {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Chaîne url = "jdbc:oracle:thin:@localhost:1521:orcl";
Utilisateur de chaîne = "scott" ;
Mot de passe de chaîne = "tigre" ;
Connexion de connexion = null ;
String sql = "Insérer dans les valeurs USERINFO (?,?,?)" ;
PreparedStatement pst = null ;
//Détermine si le nom de connexion existe déjà
Instruction s = nulle ;
ResultSet rs = nul ;
String sql_ck = "Sélectionnez LOGINNAME FROM USERINFO" ;
essayer {
conn = DriverManager.getConnection (url, utilisateur, mot de passe);
pst = conn.prepareStatement(sql);
pst.setString(1, u.getName());
pst.setString(2, u.getLoginname());
pst.setString(3, u.getLoginpsw());
//Détermine si le nom de connexion existe déjà
s = conn.createStatement();
rs = s.executeQuery(sql_ck);
while(rs.next()){//Pourquoi un index non valide apparaît-il lors de l'utilisation de rs.getString(2) ?
if( rs.getString("LOGINNAME").equals(u.getLoginname()) ){
System.out.println("Le nom de connexion existe déjà, l'enregistrement a échoué");
casser;
}autre{
pst.executeUpdate();
System.out.println("Inscription réussie");
casser;
}
}
} catch (SQLException e) {
e.printStackTrace();
}enfin{
essayer {
rs.close();
pst.close();
s.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//interface principale//
//La structure de la table dans la base de données est comme ceci
//name (nom d'utilisateur, utilisé pour l'affichage),
//loginname (nom de login, l'identifiant saisi lors de la connexion)
//loginpsw (mot de passe saisi lors de la connexion)
jugement de connexion au package ;
importer java.util.Scanner ;
Test de classe publique {
public static void main (String[] arguments) {
inchos = 0;
Scanner sc = nouveau scanner (System.in);
System.out.println("/t/tConnexion, veuillez appuyer sur 1/t/tInscription, veuillez appuyer sur 2");
chos = sc.nextInt();
commutateur(chos){
cas 1 : Check.checkUser(In.getUser());break;
cas 2 : Register.registUser(In.registerUser());break;
par défaut : System.out.println("Veuillez saisir le bon choix");break;
}
}
}