Problem mit MySql UPDATE

CrimeTime89

Mitglied
Hallo,
ich habe seit wenigen Tagen in mein C# Projekt eine anbindung zu einer MySql Datenbank hergestellt, Lesen/Schreiben geht Ohne Probleme wäre da bloss nich dieses UPDATE was überhaupt nicht gehen will.

Ich möchte mit diesem Update Bewirken das jedesmal wenn sich ein User in meinem Programm Anmeldet in die Datenbank der TIMESTAMP für den letzten Login reinschreibt bzw. Updated.

Hier mein Code für die Update Funktion:
Code:
public void Update(string username)
        {
            string Query = "UPDATE users SET Last_Online= 'Test' WHERE username= " + username + ";";
            
            MySqlCommand addUpdate = new MySqlCommand(Query, this.sqlConn);

             try
            {
                addUpdate.ExecuteNonQuery();
            }
            catch (Exception excp)
            {
                Exception myExcp = new Exception("Could not Update: " +
                    excp.Message, excp);
                throw (myExcp);
            }
        }
 

deepthroat

Erfahrenes Mitglied
Hi.

Was ist denn Last_Online für eine Spalte (Typ)?

Was bekommst du denn für eine Ausnahme?

Du weißt was SQL Injection bedeutet?

C#:
var query = "update users set last_online = NOW() where username = ?user";
using (var cmd = new MySqlCommand(query, sqlConn)) {
  cmd.Parameters.add("?user", username);

  try {
    cmd.ExecuteNonQuery();
  ...
Gruß

PS: Ups, der Highlighter kennt das C# var Schlüsselwort nicht? :confused:
 

RudolfG

Erfahrenes Mitglied
...
UPDATE was überhaupt nicht gehen will.

Allgemein würde ich sagen, dass um username (also in dem Anführungszeichen) noch das Hochkomma hinkommt z. B. so:

Code:
string Query = "UPDATE users SET Last_Online= 'Test' WHERE username= '" + username + "';";

aber besser und genauer kann man helfen wenn du uns sagen könnte was die Exception die du ja fängst als Message ausgibt.

Gruß
RudolfG

PS: Die Lösung von deepthroat ist hier aber tausentmal besser! :D
 

CrimeTime89

Mitglied
Danke für die Antworten, aber leider ist die Spalte dann immer noch leer g*

hier der Export von der Spalte:
Code:
`Last_Online` text NOT NULL,
 

deepthroat

Erfahrenes Mitglied
Danke für die Antworten, aber leider ist die Spalte dann immer noch leer g*

hier der Export von der Spalte:
Code:
`Last_Online` text NOT NULL,
Soll das heißen das du keine Ausnahme bekommst?

Warum hast du die Spalte als TEXT deklariert und nicht einen der Datum-/Zeittypen wie z.B. TIMESTAMP verwendet?

Wie kontrollierst du denn die Werte in der Tabelle? Verwendest du Transaktionen?

Gruß
 

CrimeTime89

Mitglied
@ deep, das liegt daran das ich schon ein TIMESTAMP in einer Spalte Benutze, ich denke ich kann nicht mehr als eins haben, und ich bekomme leider keine Fehlermeldung.

@michael wie führe ich das denn aus im Mysql? einfach über PhpMyAdmin in dem Code Fenster?


Edit:
Ja michael es Funktioniert.
 
Zuletzt bearbeitet:

deepthroat

Erfahrenes Mitglied

CrimeTime89

Mitglied
hatte leider den Code an einer Falschen Stelle eingebaut, da wo er nicht erreicht werden konnte, nun habe ich ihn Richtig eingebaut und alles Funktioniert wie es es sollte Danke euch :)