2017-10-05 1 views
0

Je tente de dupliquer les entrées dans la colonne username mais le résultat est toujours dans l'instruction else qui est les données sont insérées avec succès dans la table qui ne doit pas être dupliquée en fonction de l'instruction if. Par ailleurs String value1=username1.getText();.comment éviter la duplication. Java, SQL

est ici le code:

String sq = "SELECT username FROM login where username = '"+value1+"'"; 

if (sq.equals(value1)){ 
JOptionPane.showMessageDialog(null,"username is already existed! please 
create new username."); 
} 
else{ 
int k=st.executeUpdate("insert into 
login(username,password,firstname,lastname,address,contactno) 


values('"+value1+"','"+value2+"','"+value3+"','"+value4+"', 
'"+value5+"','"+value6+"')"); 
JOptionPane.showMessageDialog(null,"Data is successfully saved"); 
} 
+0

study avez-vous debbuged et vérifié les valeurs de deux chaînes sont égales ou non? – VedX

+4

Eh bien, vous n'exécutez jamais la requête 'SELECT username'. Comment pouvez-vous obtenir le jeu de résultats sans exécuter la requête? –

+1

@shinbona autant que je comprends après avoir regardé votre code, vous n'avez pas exécuté votre requête "sq". Vous devez comparer le résultat retourné en exécutant sq –

Répondre

0

sq ne sera jamais égale à valeur1 si vous attribuez juste à un exposé complet SELECT:

String sq = "SELECT username FROM login where username = '"+value1+"'"; 

Ce que vous manque est la demande DB pour votre Chaîne sq.

1

Vous venez de créer la chaîne SQL et ne l'exécutez jamais (à la place, vous le comparez au nom d'utilisateur, qui sera toujours faux).

Vous devriez l'exécuter et vérifier le résultat. E.g. (Gestion des erreurs et le nettoyage des ressources omis pour des raisons de brièveté):

Connection conn = // Connect to the database... 
PreparedStatement ps = 
    conn.prepareStatement("SELECT username FROM login where username = ?"; 
ps.setString(1, value1); 
ResultSet rs = ps.executeQuery(); 
if (rs.next()) { 
    JOptionPane.showMessageDialog 
     (null,"username is already existed! please create new username."); 
} 
+1

Merci beaucoup! C'est tellement utile :) – shinbona

0

sq contient la requête (code sql)

String sq = "SELECT username FROM login where username = '"+value1+"'"; 

value1 contient la valeur de nom d'utilisateur (par exemple "user1"). Alors

sq.equals(value1) 

sera toujours faux

"SELECT username FROM login where username = '"+value1+"'" != value1 
0

Bases de cordes:

String sq = "Something in double quotes" 

Affecte Something à Sq

Et

.
String value1=username1.getText(); 

pouvez obtenir une autre chaîne, permet de dire par exemple « root »

sq.equals(value1) 

maintenant Chaîne de contenu de contrôle de la méthode classe equals() des deux chaînes (carrés et valeur1).

Si ce n'est pas le cas, false renvoie false, ce qui se produit dans votre cas.

Maintenant, comment atteindre votre objectif? les gens ont déjà répondu à cette question.

Je recommande de vous