Zum Inhalt springen

Syntaxproblem mit C# und MySQL


Empfohlene Beiträge

Geschrieben

Hallo, habe per C# und MySQL folgende Syntax:

Problem selbst:

string com = "Insert Into T_Event (L_ID, E_Date, E_Uhr, U_ID, E_Kommentar, EVS_ID) "

+ "Values ('" + cb_E_loc.SelectedIndex + "', '" + tb_E_Datum.Text 

+ "', '" + cb_E_Uhrzeit.Text + "', " + mainUser.U_ID + ", '" 

+ tb_E_Kommentar.Text + "', " + cb_E_Status.SelectedIndex + ")";

res = dbcon.DB_Insert(com);


Event_insertPosition(res); // Eintragen der Position  
dbcon.DB_Insert
public static long DB_Insert(string com_str)

        {

            long erg = 0;

            MySqlCommand command = connection.CreateCommand();

            command.CommandText = com_str;

            command.Connection.Open();

            erg = command.ExecuteNonQuery();

            connection.Close();

            return erg;

        }

res sollte eigentlich die aktuelle Event_ID aus der Tabelle T_Event zurückgeben (AutoIncrement-Primärschlüssel), tatsächlich kommt nur '1' raus, bei egal welchem Datensatz.

Leider weiss ich nicht, wo hier momentan das Problem liegen könnte.

Geschrieben

Was genau soll bei dir die Event_ID sein?

Laut meinem Wissen, welches durch Google nur bestätigt wird, gibt ExecuteNonQuery() die anzahl Zeilen zurück die von dem Statement betroffen waren.

Da du nur einen Eintrag hinzufügst ist das Ergebnis somit auch die eins.

Geschrieben (bearbeitet)

die event-id soll die einmalige id des events zurückgeben.

event = datensatz, der eigenschaften L_ID usw enthält

da die event-id bzw das event später weiter verwendet wird, ist das somit das identifikationsmerkmal

der user trägt ein event ein und liest es später wieder aus. die event_id wird dauerhaft gespeichert. vorstellbar wie eine artikelnummer für artikel in einem bestellsystem

da aber nun vorher durchaus event_id 151 existieren kann und das einzutragende event bzw das eben eingetragene event die nummer 152 bekommt, benötige ich eben genau diese ID

auf grund einer hohen nutzungswahrscheinlichkeit weiss ich nicht, ob es sinnvoll ist, einfach die id der letzten zeile zu lesen

Bearbeitet von Chirin
Geschrieben (bearbeitet)

Ich würde die ID bereits beim Anlegen des Events generieren lassen. Möglich wäre hier eine GUID.

EDIT: Da MySQL diesen Datentyp nicht kennt, wäre hier varchar(36) möglich.

Bearbeitet von lbm1305
Geschrieben

string com = "Insert Into T_Event (L_ID, E_Date, E_Uhr, U_ID, E_Kommentar, EVS_ID) "
+ "Values ('" + cb_E_loc.SelectedIndex + "', '" + tb_E_Datum.Text
+ "', '" + cb_E_Uhrzeit.Text + "', " + mainUser.U_ID + ", '"
+ tb_E_Kommentar.Text + "', " + cb_E_Status.SelectedIndex + ")";[/PHP]

Hat zwar nichts mit dem Thema zu tun...

Aber: Warum benutzt Du keinen Formatstring?

Ist zum einen effektiver,

[PHP]
string insertString = string.Format("Insert Into T_Event (L_ID, E_Date, E_Uhr, U_ID, E_Kommentar, EVS_ID) Values ('{0}','{1}','{2}','{3}','{4}','{5}')", cb_E_loc.SelectedIndex, tb_E_Datum.Text, cb_E_Uhrzeit.Text, mainUser.U_ID, tb_E_Kommentar.Text, cb_E_Status.SelectedIndex);

und vor allem wird für denjenigen, der Deinen Code später mal lesen soll, schneller ersichtlich, dass es sich um eine Mischung aus einem String und entsprechenden Variablen handelt. Auf einen Blick ist zu erkennen, dass hier 6 Variablen an der Zusammenstellung des Strings beteiligt sind.

Wer's noch schöner haben will, kann das Ganze auch mit einem StringBuilder bauen und so für jede Variable, die im String landet, eine Zeile mit dem StringBuilder (Methode: AppendFormat) hinzufügen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...