Neue Zeile in DB anlegen

Limosan

Mitglied
Hey Leute, hoffe mir kann jemand helfen.. Undzwar hab ich für mein Login eine JDBC Verbindung hergestellt, anmelden mit Benutzer und Pw läuft alles, jedoch möchte ich nun

aus meinem Programm ein neuen Benutzer anlegen.

Ich habe folgenden Code verwendet, jedoch springt das Programm nicht aus der While schleife wenn kein Benutzer gefunden wurde..

Java:
public static void neuAnlegen(String name, String passwort)
	{
		loginVerbi = getInstance();

		if(loginVerbi != null){
			Statement query;
			try {
				query = loginVerbi.createStatement();
				String pruefen = "SELECT benutzername FROM login WHERE benutzername LIKE '"+ name +"'";
				ResultSet result = query.executeQuery(pruefen);
				while (result.next()) {
					if(result.getString("benutzername").equalsIgnoreCase(name)){
						JOptionPane.showOptionDialog(null, name+" ist bereits vorhanden", "Info",
								JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,null,null,null);

						NeuBenutzer.run();
					}else{

						String sql = "INSERT INTO login (benutzername, passwort) " +	"VALUES(?,?)";
						PreparedStatement preparedStatement = loginVerbi.prepareStatement(sql);
						preparedStatement.setString(1, name);
						preparedStatement.setString(2, passwort);

						preparedStatement.executeUpdate();

						JOptionPane.showOptionDialog(null, name+" wurde angelegt", "Info",
								JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,null,null,null);
						Menue1.run();

						//					} 
					}
				}}catch (SQLException e) {
					e.printStackTrace();
				}
		}
	}

Wer hat Verbesserungsvorschläge?
 
Zuletzt bearbeitet:
Ich habe folgenden Code verwendet, jedoch springt das Programm nicht aus der While schleife wenn kein Benutzer gefunden wurde..

Woran merkst du das er die while-Schleife nicht verlässt?

Wer hat Verbesserungsvorschläge?

Für das INSERT verwendest du ein PreparedStatement für das SELECT aber nicht? -> SQLInjection
Entscheide dich ob du Attribute/Variablen englische oder deutsche Bezeichnungen gibst, nicht mischen.

Ein großer Nachtteil deines Codes ist die Mischung von Logik und GUI. Probiere diese Teile zu trennen (-> Schichten).
 
Woran merkst du das er die while-Schleife nicht verlässt?

Ok, dass war vllt. nicht richtig ausgedrückt, ich merke aber dass das else Statment nicht ausgeführt wird wenn kein Benutzer vorhanden ist..:noe:


Für das INSERT verwendest du ein PreparedStatement für das SELECT aber nicht? -> SQLInjection
Ok, dass liegt an Copy and Paste und meiner Unwissenheit. 😳
Welchen Standart sollte man besser verwenden?
 
Ok, dass war vllt. nicht richtig ausgedrückt, ich merke aber dass das else Statment nicht ausgeführt wird wenn kein Benutzer vorhanden ist..:noe:

Warum sollte es auch ausgeführt werden? Da
Code:
result.next()
false liefert wird die while-Schleife gar nicht betreten.

Ok, dass liegt an Copy and Paste und meiner Unwissenheit. 😳
Welchen Standart sollte man besser verwenden?

SQLInjection bedeutet das ein SQL Statement von einem Benutzer manipuliert werden kann um weitere Informationen/Daten aus der DB zu lesen. ==> BÖSE

PreparedStatement verhindern sowas
 

Neue Themen


Zurück
Oben