![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Hi, ich habe ein Progamm, welches überprüfen soll, ob ein Benutzer bereits mit dem Namen in der DB gespeichert ist. Wenn er noch nicht vorhanden ist soll er hinzugefügt werden. Ich habe mir überlegt, dass versucht werden soll einen Datensatz zufinden, in dem der Benutzername und ein Benutzername in der DB identisch sind und wenn diese der Fall ist die Variable "userInDB" auf "true" gesetzt werden soll. Wenn kein Benutzer gefunden wurde soll eigentlich automatisch in den "catch" Bereich gewechselt werden und dort die Variable "userInDB" auf "false" gesetzt werden, sowie die Methoden " insertUserInDB();" aufgerufen werden. Mein Problem ist nun, dass egal was ich mache immer die Methode automatisch in den Catch Bereich springt und dort die Methode "insertUserInDB();" aufruft. Ich denke mal mein Select Statment stimmt nicht Hilfe Hilfe Hoffe ihr könnt mir helfen Code: private void checkRegNameDB()
{
//testen ob bereits ein User mit dem Namen in der DB vorhanden ist
try
{
searchSt = "Testuser"; //regName;
Statement statement = connection.createStatement ();
String queryString = "SELECT * FROM JIM WHERE name = "+searchSt+"; ";
ResultSet resultSet = statement.executeQuery (queryString);
String id = resultSet.getString (1);
String name = resultSet.getString (2);
String pw = resultSet.getString (3);
String ip = resultSet.getString (4);
statusArea.append ("User "+searchSt+" in DB vorhanden"+"\n");
userInDB = true;
}
catch (Exception e)
{
statusArea.append("User "+searchSt+" nicht in DB vorhanden"+"\n");
userInDB = false;
}
if (userInDB)
{
setStatusMessage("User "+searchSt+" bereits in DB enthalten");
}
else
{
insertUserInDB(); //methode zum hinzufügen eines Benutzers
}
}
Quakes |
|
| | Nach oben #2 |
| Gast
Beiträge: n/a
|
Wie kommst du denn darauf, dass dein Programm in den catch-Block springen soll (wenn es normal arbeitet) ??? Da gehts nur rein, wenn während der Ausführung des Programmes eine Exception im try-Block geworfen wird. Lass dir mal im catch-Block mit e.printStackTrace() den Fehler und den Stacktrace ausgeben und melde dich wieder hier mit der Meldung. Hat dein Compiler den code SO übersetzt ? ich hatte neulich so was ähnliches vor ... ich wusste genau, dass nur EIN Datensatz gelesen wird ... aber das weiss Java ja nicht. Bei mir kam der Compiler-Fehler, dass ich fürs ResultSet mind. ein mal next aufrufen muss (siehe Beispiel unten). und das mit dem userInDb würde ich so machen .... vor der while-Schleife die Variable auf false setzen und in der Schleife einfach die Variable auf true setzen ... denn da gehts nur rein, wenn das Abfrageergebnis mind. einen Datensatz liefert. D.h. wenn kein Datensatz geliefert wird gehts nicht in die Schleife und die Variable behält ihren alten Wert. Und nach der Schleife wertest du die Variabel wie gehabt aus. Letztendlich sieht mein Vorschlag dann so aus: Code: private void checkRegNameDB()
{
//testen ob bereits ein User mit dem Namen in der DB vorhanden ist
boolean userInDb = false;
try
{
searchSt = "Testuser"; //regName;
Statement statement = connection.createStatement ();
String queryString = "SELECT * FROM JIM WHERE name = " + searchSt + "; ";
ResultSet resultSet = statement.executeQuery (queryString);
while( resultSet.next() ){
userInDb = true;
String id = resultSet.getString (1);
String name = resultSet.getString (2);
String pw = resultSet.getString (3);
String ip = resultSet.getString (4);
statusArea.append ("User "+searchSt+" in DB vorhanden"+"\n");
}// while
}// try
catch (Exception e)
{
// Fehlerbehandlung ... z.B. Eintrag in einem Log-File machen oder einfach nur
e.printStackTrace();
}
if (userInDB)
{
setStatusMessage("User "+searchSt+" bereits in DB enthalten");
}
else
{
insertUserInDB(); //methode zum hinzufügen eines Benutzers
}
}
Michael PS: beschäftige dich mal mit Exceptions ... das ein sehr wichtiger Bereich in der Java-Entwicklung ... wenn du das nicht verstanden hast, kannst du schon fast einpacken. PS2: Noch einfacher wärs doch (fällt mir gerade ein) wenn du einfach versuchst den User einzufügen ... wenn er schon vorhanden ist wird doch eh ein Fehler von der DB geworfen (du hast doch hoffentlich einen primären Schlüssel angelegt !?!?) ... Klappt es, war der User noch nicht drin ist es aber anschliessend ... wenn nicht einfach die Fehlermeldung auswerten und entsprechend reagieren. |
|
| | Nach oben #3 |
| Gast
Beiträge: n/a
|
Hi, vielen Dank !!! hab's von der Logik her glaub verstanden ne von den Exceptions hab ich wirklich nicht so viel plan ... zu der DB: Hab nen Primary Key vergeben, nur den hab ich auf einen zusätzliche Entität gesetzt (ID). Aber Primary Key auf Username und PW setzen ist vielleicht wirklich schlauer und vorallem einfacher thx für den Tipp werde das möglichst bald mal testen und schauen ob alles geht. Danke für die Hilfe mfg Quakes |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| string auf @ überprüfen | Garnele | PHP-Programmierung | 17 | 06.02.2007 18:16 |
| Pberprüfen ob Wert vorhanden ist. | bob | Datenbanken | 4 | 04.01.2006 17:55 |
| Bei PipedStreams den Buffer überprüfen | Arvodan | Allgemeine Java-Programmierung | 0 | 10.10.2005 09:25 |
| Überprüfen, ob gesuchte ID vorhanden ist? | Javaner No.1 | Datenbanken | 4 | 10.02.2005 07:59 |
| 2Dimensionales Array, 2mal denselben Datensatz | zonk | Allgemeine Java-Programmierung | 1 | 20.10.2004 07:02 |