![]() |
Datenbank: MySQL • Version: - • Zugriff über: -
"Now" in Datenbank speichern
Mein Problem ist folgendes:
Ich habe eine Datenbank namens test, darin befindet sich eine Tabelle namens IP, diese hat 2 Zeilen, die eine heißt IP die andere Zeit. (IP-Typ: VACHAR) Die IP in diese IP-Zeile zu setzen ist kein Problem. Das Problem ist eher, die Zeit (now) in diese Zeit-Spalte zu bekommen.
Delphi-Quellcode:
Das klappt leider nicht, "Zeit" bleibt immer leer komischerweise :pale:
q_Time := 'INSERT INTO IP (zeit) VALUES ('
+ FormatDateTime('hh:mm:ss', now) + ')'; |
Re: "Now" in Datenbank speichern
Kannst Du bei den verwendeten DB-Kompos nicht parametrisieren?
|
Re: "Now" in Datenbank speichern
Zitat:
Zitat:
|
Re: "Now" in Datenbank speichern
Was genau meinst du damit?
Ich habe eben dann schon
Delphi-Quellcode:
probiert geht aber auch nicht.
q_Time := 'INSERT INTO IP (zeit) VALUES ('
+ TimeToStr(Now) + ')'; Das Feld zeit ist vom Typ TIME |
Re: "Now" in Datenbank speichern
Versuch es mal so:
Delphi-Quellcode:
q_Time := 'INSERT INTO IP (zeit) VALUES ('
+ QuotedStr(FormatDateTime('hh:mm:ss', now)) + ')'; |
Re: "Now" in Datenbank speichern
Oh, vielen dank Daddy :)
(Klappt nun) Wo wir schonmal dabei sind: ein Quote ist ja das hier => " Was machen denn diese Zwei Quotes so besonders? Als ich mit PHP und MySQL gearbeitet habe, meine ich mich nicht erinnern zu können jemals QUotes gesetzt zu haben. |
Re: "Now" in Datenbank speichern
Hallo,
warum verwendest Du nicht die Function NOW(), die von MySQL unterstützt wird? Dadurch bist Du auch nicht von der Zeit des Clients abhängig:
Delphi-Quellcode:
//Edit:
q_Time := 'INSERT INTO IP (zeit) VALUES (NOW())';
Besser ist wohl noch CURTIME():
Delphi-Quellcode:
Gruß
q_Time := 'INSERT INTO IP (zeit) VALUES (CURTIME())';
xaromz |
Re: "Now" in Datenbank speichern
Ist natürlich davon abhängig, ob man die Serverzeit oder die Clientzeit eintragen möchte ;)
@Tommy: wie sähe das denn in PHP aus?
Code:
$sql = "INSERT INTO ip(zeit) VALUES('$zeit')";
|
Re: "Now" in Datenbank speichern
Noch ein Problem :wall:
Wenn eine gewisse Zeit abgelaufen ist, wird folgendes aufgerufen:
Delphi-Quellcode:
Table-Inhalt löschen funktioniert
begin
// Erst alle anderen (vorherigen) Einträge löschen DeleteTableContent; // Minuszählen abfangen, Zeit zurücksetzen, aus Registry lesen Zeit := ReadDWORDCurrentUser(Key, Value); // Dann den neuen hizufügen AddIPToDatabase; // und dann noch die Zeit hinzufügen AddTimeToDataBase; end; // End vom elseZweig der Zeit-If-Abfrage Zeit wieder zurücksetzen funktioniert auch IP in die DB schreiben funktioniert auch aber Die Zeit DANN nicht. Da steht dann immer 0 in der DB. Setze ich AddIP.. hinter AddTime.. dann ist es umgekehrt. |
Re: "Now" in Datenbank speichern
Zeig doch mal den Code der beiden Methoden.
|
Re: "Now" in Datenbank speichern
// AddIPToDataBase
Delphi-Quellcode:
procedure TForm1.AddTimeToDataBase;
begin // Schreiben if assigned(FResult) then begin if FMysql.Status<>MYSQL_STATUS_READY then // ShowMessage('Ein Ergebnis wurde unvollständig gelesen!'); FreeAndNil(FResult); end; q_Time := 'INSERT INTO IP (zeit) VALUES (' + QuotedStr(FormatDateTime('hh:mm:ss', now)) + ')'; caption := FormatDateTime('hh:mm:ss', now); FResult := FMysql.query(q_Time, true, ex); if assigned(FResult) then begin // ShowMessage('Query: OK - Ergebnis gespeichert') end else if ex then begin // ShowMessage('Query: OK - ausgeführt') end else begin // ShowMessage('Query fehlgeschlagen: '+FMysql.LastError); end; // end;
Delphi-Quellcode:
// AddTimeToDataBase
procedure TForm1.AddIPToDatabase; begin // Schreiben if assigned(FResult) then begin if FMysql.Status<>MYSQL_STATUS_READY then // ShowMessage('Ein Ergebnis wurde unvollständig gelesen!'); FreeAndNil(FResult); end; q_IP := 'INSERT INTO IP (ip) VALUES (' + QuotedStr(sEdit1.Text) + ')'; FResult := FMysql.query(q_IP, true, ex); if assigned(FResult) then begin // ShowMessage('Query: OK - Ergebnis gespeichert') end else if ex then begin // ShowMessage('Query: OK - ausgeführt') end else begin // ShowMessage('Query fehlgeschlagen: '+FMysql.LastError); end; // end; |
Re: "Now" in Datenbank speichern
Wieso legst Du denn 2 Datensätze an? Kombinier doch beides.
SQL-Code:
INSERT INTO IP(ip,zeit) VALUES(ip-Variable,zeit-Variable)
|
Re: "Now" in Datenbank speichern
Darf ich mich blöd anstellen?
Delphi-Quellcode:
Das funktioniert so leider nicht.
q_IP := 'INSERT INTO IP (ip, zeit) VALUES ('
+ QuotedStr(sEdit1.Text), QuotedStr(FormatDateTime('hh:mm:ss', now)) + ')'; |
Re: "Now" in Datenbank speichern
DeddyH hat recht, so wie du es machst fügst du ZWEI Datensätze in die Tabelle ein. Einmal einen in dem das Feld IP unbelegt ist und einmal einen in dem das Feld Zeit unbelegt ist.
In deinem Fall einfach EINEN KOMPLETTEN Datensatz in die Tabelle einfügen, siehe oben. Falls du wirklich einmal zwei Felder nicht in einem SQL Befehl packen kannst, dann musst du beim Einfügen eines neuen Datensatzes INSERT verwenden und beim Ändern UPDATE, wobei du dann noch eine eindeutige Datensatzidentifizierung brauchst (Key). |
Re: "Now" in Datenbank speichern
Delphi-Quellcode:
q_IP := Format('INSERT INTO IP (ip, zeit) VALUES (%s,%s)',
[QuotedStr(sEdit1.Text),QuotedStr(FormatDateTime('hh:mm:ss', now))]); |
Re: "Now" in Datenbank speichern
Hallo,
Zitat:
Delphi-Quellcode:
Gruß
IP := QuotedStr(sEdit1.Text);
Zeit := QuotedStr(FormatDateTime('hh:mm:ss', now)); q_IP := Format('INSERT INTO IP (ip, zeit) VALUES (%s, %s)', [IP, Zeit]); xaromz |
Re: "Now" in Datenbank speichern
Zitat:
|
Re: "Now" in Datenbank speichern
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz