Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Syntaxproblem mit C# und MySQL

Empfohlene Antworten

Veröffentlicht

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.

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.

  • Autor

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

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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.