Frage von Ic3tea55, 91

Hallo, ich habe eine Frage bezüglich Visual Basic und Datenbanken. Kann mir vielleicht jemand helfen?

Ich will wenn ich auf einen Button klicke einen Datenbankeintrag machen. Ein Name, ein Datum und eine Uhrzeit soll nachher in der Datenbank stehen.

Dies funktioniert soweit so gut auch, aber wenn ich anschließend noch einen Eintarg machen will kommt immer die Fehlermeldung "Parameter '@name' has already been defined.".

Obwohl ich immer einen anderen Name verwende kommt diese Fehlermeldung. Ich muss das Programm also immer nach einem Eintrag schließen und wieder öffnen um einen zweiten Eintrag zu machen.

Kann mir jemand vielleicht dabei helfen? Ich stehe momentan echt auf dem Schlauch weil ich nicht drauf komme. :D

Vielen Dank schon mal im Voraus!

Antwort
von Suboptimierer, 60

Vielleicht ein reserviertes Wort oder der Parameter darf nicht so heißen wie eine Spalte? 

Das ist nur eine Vermutung. Ich bin da nicht so im Thema. Ich würde mal probieren, deine Parameter anders zu bezeichnen, meinetwegen @paramName beispielsweise.

Kommentar von Ic3tea55 ,

Funktioniert leider nicht :(

Antwort
von CrystalixXx, 23

Die Antwort kommt vielleicht etwas spät, aber ...

Die Ursache liegt im SqlCommand. Im Try-Block gibst du dem Command die 3 Parameter (name, datum, uhrzeit), die beim Erneuten Aufrufen der Methode wieder hinzugefügt werden sollen, aber eben schon vorhanden sind. Du schließt zwar die Verbindung, aber der SqlCommand bleibt nach der Verbindung in seinem Zustand, das heißt dass auch die bereits hinzugefügten Parameter erhalten bleiben.

Du solltest also "sqlComm.Parameters.Add" nur einmal verwenden und für jedes weitere mal nur den Wert des Parameters ändern.

Antwort
von wotan38, 33

Ich arbeite zwar nicht mit Visual Basic, aber ich kann in Deinem Code keine Schleife erkennen. Du bearbeitest einen Vorgang und beendest dann die Datenbankverbindung (close). Eine weitere Eingabe ist im Programm gar nicht vorgesehen. Deshalb musst Du die Programmroutine jedesmal neu starten, wenn Du eine Eingabe machen willst.

Kommentar von Ic3tea55 ,

Klingt logisch!

Wie würdest du dies dann am besten lösen?

Kommentar von wotan38 ,

Schleifen gehören zur elementarsten Prozedur einer jeden Programmiersprache. Sie dienen dazu Wiederholungen zu programmieren. Welche Arten von Schleifen es in Visual Basic gibt und wie sie erstellt werden, musst Du in der Dokumentation nachlesen.

Nach den Vorbereitungen wie Verbindung zur Datenbank herstellen startest Du die Schleife und nimmst die Eingabe entgegen. Als nächstes prüfst Du, ob die vereinbarte Bedingung zum Beenden der Schleife eingegeben wurde. Falls ja, brichst Du die Schleife ab, falls nein verarbeitest die Eingabe wie vorgesehen. Wenn das alles erledigt ist, startet die Schleife von alleine wieder von Neuem. Nach der Schleife kommen abschließende Maßnahmen wie ein close für die Datenbank oder irgendwelche Meldungen wie Anzahl der eingegebenen Sätze. Wichtig ist das Verlassen der Schleife nach dem Beenden aller Eingaben, damit es keine Endlosschleife wird. Ich beginne in so einem Fall immer mit der Schleife mit einer Endebedingung und einer für Testzwecke sichtbaren Ausgabe (beliebige Meldung). Erst wenn diese funktioniert, kommt der Vorlauf (vor der Schleife), die Verarbeitung (in der Schleife) und der Nachlauf (nach der Schleife) dran. 

Antwort
von Reaschplay, 45

Du hast @Name in "" geschrieben, daher gilt es als string und nicht als Variable. Ich glaube es jedenfalls ;D

Kommentar von Ic3tea55 ,

So lässt sich das Programm garnicht starten :D :'(

Kommentar von SirSchinken ,

Eben noch dabei potentielle Programme mit Backdoor zu verbreiten & jetzt willst du plötzlich leuten "helfen" Reaschplay? ^^

Keine passende Antwort gefunden?

Fragen Sie die Community