Fehler bei Datenbankeintrag
Tom2
- asp.net
Hallo Leute
Mit dem Risiko, danach nur noch Tom 1/2 zu sein, schreib ich hier mal ein Cross-Posting. Das Original findet man unter http://www.drweb-community.de/.someon?action=forum%2Fforum_thread&sid=&id=87279&pid=19.
Ich poste hier nochmals, weil ich ohne die Lösung nicht weiterarbeiten kann und bei Strohhalm leider keine Antwort erhalten habe. Also, hier das Posting:
[Begrüssung (und schleimereien ;-) rausgeschnitten]
Folgendes, seltsames Verhalten von meinem ASP-Projekt (auf IIS 4.0) mit einer Access-Datenbank (per ODBC) macht mich fast verrückt:
Ich habe eine Tabelle (USER) mit Benutzerinformationen (USERNAME, PASSWORD und GROUPID). Ich habe mir eine Hand voll allgemeine Funktionen geschrieben, mit denen ich komfortabel auf Datenbanken zugreiffen kann. Diese funktionieren nun schon seit einem halben Jahr anstandslos. Vor ein paar Stunden wollte ich mittels UPDATE-Statement einen Wert in der Spalte PASSWORD ändern. Doch dann bekam ich folgende Fehlermeldung:
Error in DBAccess(): -2147217904
Microsoft OLE DB Provider for ODBC Drivers, [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
UPDATE USRDB
SET PASSWORD='912ec803b2ce49e4a541068d495ab570'
WHERE USER='Testuser';
Microsoft VBScript runtime error '800a01a8'
Object required: '[undefined]'
/lewe/test/sql.asp, line 55
Für PASSWORD und USER kann ich beliebige Werte einsetzen und erhalte immer noch diese Fehlermeldung. Das Seltsame ist jedoch, dass ich die anderen beiden Spalten in der Tabelle problemlos ändern kann! Mit genau demselben Skript! (Ein Formular, welches SQL-Statements entgegennimmt und ausführt)
Ethliche Seiten im Internet sagen mir, dass das Connection-Objekt nicht exisitert - wenn dies so wäre, dann müsste der Fehler jedoch auch bei allen anderen Abfragen auftreten.
Weis von Euch jemand Rat?
Mit freundlichen Grüssen und bestem Dank
Tom2
Hallo,
zeig mal mehr von dem code...
UPDATE USRDB
SET PASSWORD='912ec803b2ce49e4a541068d495ab570'
WHERE USER='Testuser';
ist User hier der wirkliche Name? Falls ja, musst du bei deinen anmeldungen ja absolut sichergehen, dass kein 2. mit diesem namen existiert, sonst änderst du ja mehrere pwd's... falls man seinen namen ändern kann musst du darüber auch nachdenken...
aber poste trotzdem mal mehr von dem code, kann momentan nichts erkennen...
erzeugst du die db-verbindung dírekt in der datei oder bindest du was ein?
Odium
Hi Tom2!
versuche doch vor einem conn.execute nochmal ein "Response.Write sql_stmt" einzubauen. Dann kannst du genau sehen, was an die DB geschickt wird.
Benutzt du Stored Procedures / Access Abfragen, die evt. den selben Namen haben?
Wenn du das SQL in der ASP-Seite mal nicht dynamisch zusammenbaust oder mal ein fixes reinsetzt, was schon mal funktioniert hat bei manuellen Updates, dann siehst du evt. ob es funktioniert.
sicher das USER auch als Feld existiert und nicht evt. anders geschrieben ist?
Gruß, Frank
... oder wie kann man nur so blöd sein!
Hi Frank, hi Odium
versuche doch vor einem conn.execute nochmal ein "Response.Write sql_stmt" einzubauen. Dann kannst du genau sehen, was an die DB geschickt wird.
Auch das habe ich die ganze Zeit über gemacht. Nur habe (ich Idiot) vor lauter Bäumen den Wald nicht mehr gesehen...
sicher das USER auch als Feld existiert und nicht evt. anders geschrieben ist?
Ja, *schäm* genau DAS ist es! Das Feld heisst USERNAME und nicht nur USER. Wenn ich dieses Feld probeweise geändert habe, so hab ich mir mittels SELECT zuerst die ganze Tabelle ausgeben lassen und dann unbewusst den richtigen Namen genommen.
Bitte entschuldigt die Umstände und besten Dank, ihr habt was gut bei mir.
MfG
Tom2, der reif für die Insel ist und sich diese heute Aben auch gönnt ;-)