Laden...

Update / Write to access DB (asp.net)

Erstellt von oliiix vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.367 Views
O
oliiix Themenstarter:in
34 Beiträge seit 2007
vor 16 Jahren
Update / Write to access DB (asp.net)

Hy guys

Ich probiere in eine Access DB zu schreiben bzw zu updaten. Nun habe ich jedoch schon weiss ich wie viele Möglichkeiten ausprobiert, welche mir alle denselben Fehler angezeigt haben.
My code so far:


if (Request.QueryString["nid"].ToString() == "new") 
{ 
    OleDbConnection newsConnection = new OleDbConnection(myConnectionString); 
    newsConnection.Open(); 
    string newsSelectString = "INSERT INTO tblNews (date, title, author, content)
        VALUES ('" + System.DateTime.Today.Date + " " + System.DateTime.Today.TimeOfDay + "', '" + 
    tbTitle.Text + "', '" + Session["Username"].ToString() + "', '" + tbContent.Text + "')"; 
    Response.Write(newsSelectString); 
    OleDbCommand newsCommand = new OleDbCommand(newsSelectString, newsConnection); 
    newsCommand.ExecuteNonQuery(); 
} 
else 
{ 
    OleDbConnection newsConnection = new OleDbConnection(myConnectionString); 
    newsConnection.Open(); 
    string newsSelectString = "UPDATE tblNews SET title = '" + tbTitle.Text + "', content = '" + tbContent.Text + "' WHERE id = '" + nID + "'"; 
    OleDbCommand newsCommand = new OleDbCommand(newsSelectString, newsConnection); 
    newsCommand.ExecuteNonQuery(); 
} 

Anhand der Fehlermeldung denke ich dass mit meinem SELECT/UPDATE string was falsch ist. Ich bekomme den Fehler dass die Syntax falsch ist. Markiert wird folgende Zeile:

newsCommand.ExecuteNonQuery(); 

P.s. nID ist ein string. Enthält eigentlich die ID des News Eintrags, ausser es handelt sich um einen neuen Eintrag (wert= "new").

Habe nun wirklich schon alle Google Einträge ausprobiert jedoch ohne Erfolg... Auslesen der DB geht ohne Probleme. Nur schreiben kann ich nicht😠 DB erfordert keinerlei Benutzeridentifikation und die schreib-leserechte auf dem Ordner sind ebenfalls vorhanden.

Vielen Dank fürs Anschauen!

Thanks for your help for another time 🙂

1.274 Beiträge seit 2005
vor 16 Jahren

Welche Fehlermeldung bekommst du denn?

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein

O
oliiix Themenstarter:in
34 Beiträge seit 2007
vor 16 Jahren

Die Fehlermeldung ist folgende:

Syntaxfehler in der INSERT INTO-Anweisung. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.OleDb.OleDbException: Syntaxfehler in der INSERT INTO-Anweisung.

Source Error: 


Line 58:             Response.Write(newsSelectString);
Line 59:             OleDbCommand newsCommand = new OleDbCommand(newsSelectString, newsConnection);
Line 60:             newsCommand.ExecuteNonQuery();
Line 61:         }
Line 62:         else
 

Source File: d:\scratchit\public_html\news_edit.aspx    Line: 60 

Stack Trace: 


[OleDbException (0x80040e14): Syntaxfehler in der INSERT INTO-Anweisung.]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +267
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +192
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +48
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +106
   System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +108
   ASP.news_edit_aspx.btnSave_OnClick(Object sender, EventArgs e) in d:\scratchit\public_html\news_edit.aspx:60
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
 

Ich habe nun in der Access DB noch Date zu nem string geändert, sodass ich sicher gehn kann dass es nicht am Datum eintragen liegt. Jedoch erfolglos (selbe Fehlermeldung). Habe das Problem auch noch auf csharpfriends.com gepostet, welche ebenfalls noch ratlos dastehn^^

Vielen Dank für alle die sich da Mühe machen und es sich angucken!!

R
122 Beiträge seit 2007
vor 16 Jahren

M. W. muss man beim Access-SQL Datumsangaben speziell formatieren. Probier mal einen string ohne Hochkomma einzufügen, der folgendes Fomat hat:
#08/31/2007#

1.274 Beiträge seit 2005
vor 16 Jahren

TIPP:
Du kannst leicht prüfen ob dein (nicht sauber) zusammengebauter SQL-String funktioniert indem du ihn in die Zwischenablage kopierst und ihn dann in Access direkt ausführst.

Liebe Grüße
LastGentleman

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein