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.
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.
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.
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.
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 & “’’’)”
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.