[ASP.NET] Datum + Zeit in mdb schreiben



  • Hi!

    Ich mach das folgende um aus der DB eine Email zu bekommen:

    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandText = "SELECT COUNT(*) FROM login WHERE Email=@ParamEmail";
    cmd.Parameters.Add("@ParamEmail", TbxEmail.Text);
    cmd.Connection = con;
    
    object oResult = cmd.ExecuteScalar();
    

    Also meine Tabelle heist login und ich schau nach, ob die Email die der User in der TextBox = TbxEmail eingegeben hat in der DB vorhanden ist.
    Jetzt möchte ich das Datum und die Zeit, wann diese Abfrage stattgefunden hat, in der Tabelle ablegen. Dazu gibt es in der Tabelle login ein Feld LastLogin. Dieses hat das Format Datum/Zeit.

    So weit bin ich schon mal:

    DateTime lldt= new DateTime();
    lldt = System.DateTime.Now;
    
    cmd.CommandText = "UPDATE login SET LastLogin=@ParamDate WHERE Email=@ParamEmail";
    cmd.Parameters.Add("@ParamDate", lldt);
    cmd.Parameters.Add("@ParamEmail", TbxEmail.Text);
    cmd.ExecuteScalar();
    

    Doch ich komm irgendwie nicht weiter. Wie muss ich lldt umwandeln?
    Oder sollte ich INSERT INTO verwenden, da ja am Anfang das Feld leer ist?

    Zur Zeit bekomm ich immer die Meldung: "Operation muss eine aktualisierbare Abfrage verwenden."
    Ich habe schon danach gegoogled und mein IUSR_* hat die Berechtigung die Datei zu ändern+schreiben.
    Vorschläge?

    Vielen Dank für gute Tipps!
    atzplzw



  • Das "Operation muss eine aktualisierbare Abfrage verwenden" Probleme ist nach einem Neustart gelöst.
    Leider funktioniert der Code trotzdem nicht. Nicht mal wenn ich das Feld LastLogin als Text definiere und etwas drin steht.

    Also muss irgendwas mit dem Command falsch sein.
    Sollte ich vielleicht .ExecuteNoQuery(); verwenden?

    atzplzw



  • So anscheinend löse ich meine Probs selber:

    string lldt = DateTime.Now.ToString();
    ...
    cmd.ExecuteNonQuery();
    

    Bleibt mir nur noch eine Frage: Der Code wird nacheinander ausgeführt. Wie im Beispiel wird zuerst .ExecuteScalar() und dann .ExecuteQuery aufgerufen. Der zweite Aufruf wird jedoch nie ausgeführt??? Er gibt keinen Fehler zurück. Muss ich also erst die Connection.Close machen und dann wieder öffnen oder geht das auch anders?

    atzplzw



  • Gäähnn!!

    //cleanup the parameters between the 2 calls
    cmd.Parameters.Clear();
    

    atzplzw


Anmelden zum Antworten