Datum in Tabelle einfügen

Hallo.

Ich möchte über ein Editfeld ein eingegebenes Datum in die Tabelle eintragen.

Bekomme aber die Fehlermeldung:
invalid input syntax for type timestamp: “update”

Ich nutze folgenden Codeausschnitt (Visual Basic):
command.CommandText =
“select UpdateFunc(‘Tabellenname’, ’ set dat_value=’’” & AusDatLab.Text & “’’’, ‘where id=’’” & Bedingung& “’’’)”

Woran kann es liegen?

dat_value ist als Timestamp definiert. Anfangs wird das aktuelle Datum standardmäßig eingetragen, was auch funktioniert.

Bitte um Hilfe.

Gruß

Ich simuliere das mal:

test=# create table dat_in (d timestamp);
CREATE TABLE
Zeit: 0,707 ms
test=*# insert into dat_in values ('update');
ERROR:  invalid input syntax for type timestamp: "update"



Ich nutze folgenden Codeausschnitt (Visual Basic):
command.CommandText =
“select UpdateFunc(‘Tabellenname’, ’ set dat_value=‘’” & AusDatLab.Text & “‘’‘, ‘where id=’’” & Bedingung& “‘’')”

Woran kann es liegen?

Nun, schaust Du Dir meinen Versuch an, sollte klar sein, was passiert. Wie man das in, hüstel, VB richtig macht, weiß ich aber nicht. Interressiert mich auch nicht.

Andreas

Ich weiß ja nicht ob Du noch VB6 oder VB.Net verwendest. Bei letzten gibt es den CommandBuilder, wo Du dir um die richtige Formatierung keine gedanken machen musst. ob es sowas bei VB6 auch gibt, weiß ich leider nicht.

Danke für die schnellen Antworten.

Andreas, deinen Vorschlag habe ich leider nicht verstanden.
Kannst du das noch mal ausführlicher schreiben?

Ich nutze das Visual Studio der Version 2008 mit Visual Basic 2008.

DB: Postgresql

Liegt es vielleicht an dem Connection String / ODBC ??

Ich nutze das Visual Studio der Version 2008 mit Visual Basic 2008.

Das ist dann aller wahrscheinlichkeit nach .Net. Der Fehlermeldung nach zu urteilen willst du den String “update” in ein DateTime Feld der Datenbank schreiben. Wieso hier Update drinnen steht, k.a. Deshalb eben den CommandBuilder verwenden.

An den ODBC Connectionstring sollte es absolut NICHT liegen

Das war kein Vorschlag, sondern eine bewußte Provokation des Fehlers, um Dir zu zeigen, was passier: Du versuchst, in ein timestamp-Feld den Wert ‘update’ einzutragen, was nun mal Bullshit ist.

Ich nutze das Visual Studio der Version 2008 mit Visual Basic 2008.

Und? Erwartest Du Mitleid?



Andreas

Danke mal wieder für die schnelle Hilfe.

Wo finde ich diesen Command-Builder denn?

Den String “update” schreibe ich aber nicht als Datum in die Tabelle.

Siehe meinen SQL Befehl:
Try
conn.Open()

command.CommandText = “select UpdateFunc(‘propvalue’, ’ set dat_value=’’” & AusDatLab.Text & “’’’, ‘where id=’’” & propval & “’’’)”
command.ExecuteScalar()

conn.Close()
Catch ex As Exception

Konnte das Problem immer noch nicht lösen.

Oder sind " bzw ’ falsch gesetzt?

Hallo AndreasBeginner,

Die erste Anlaufstelle wäre für dich mit ADO.NET auseinanderzusetzen. ADO.NET ist sehr einfach, aber mächtig. Was du da machst ist schon eine Sicherheitslücke. Stichwort: SQL Injection.

Hier ein paar Links:

danke burning_snow.

Ich habe das Problem gefunden.
Es lag an der updatefunc Funktion, die ich genutzt habe.
Diese hat einen varchar erwartet und bekommt ein date.
Klar, dass das nicht funktioniert.

Trotzdem vielen Dank für eure Hilfe.

Leider hab ich schon wieder ein neues Problem:
Ich möchte ein weiteres Datum einfügen.
Nutze die gleiche Funktion. Kein Fehler, aber der Standardeintrag now() wird nicht überschrieben durch den Inhalt vom Editfeld.

Quellcode ist identisch bei beiden Editfeldern:

Vom ersten Feld (funktioniert):
command.CommandText = “select updatedateFunc(‘propvalue’, ’ set dat_value=’,’” & AusDatLab.Text & “’, ‘where id=’’” & propval & “’’’)”


Vom zweiten Feld (kein Fehler, aber Wert wird nicht in DB geschrieben):
command.CommandText = “select updatedateFunc(‘propvalue’, ’ set dat_value=’,’” & EingDatLab.Text & “’, ‘where id=’’” & propval & “’’’)”

Initalisierung:
command.CommandText = “select InsertFunc(‘propvalue’, ‘id, dat_value, val_col’, ‘currval(’‘propvalue_id’’), ‘‘now’’, ‘‘dat_value’’ ')”

Hilfe/Tipp?

Hast Du dir mal den CommandText ausgeben lassen und geschaut, was genau dort alle sdrinnen steht? Diesen auch dann mal manuell in der DB ausgeführt?

Desweiteren kann ich dir auch weiterhin nur DRINGENd empfehlen endlich auf den CommandBuilder umzusteigen. Sowohl wegen der Sicherheit als auch wegen der Übersicht.

Bitte bitte bitte schau dir die Links an und arbeite danach. Ansonsten wirst du nur Probleme bekommen.