122 messaggi dal 15 gennaio 2008
Salve a tutti,
ho un problemino con la gestione di una INSERT contenente campi di tipo DateTime.

nel codice mi costruisco la stringa slq così:
sql = "INSERT INTO DayPilot (Name, Start, End) VALUES (";
            sql += "'" + Name.Text.Trim().Replace("'", "''") + "', #"+ DateTime.Parse(Start.Text) +"#, #" + DateTime.Parse(End.Text) + "#)";


il risultato è:
INSERT INTO DayPilot (Name, Start, End) VALUES ('PROVA', #16/02/2008 9.15.00#, #16/02/2008 9.35.00#)


ora, se io prendo questa query così com'è e la lancio direttamente in access funziona, mentre nell'applicazione genera errore in "cmd.ExecuteNonQuery();"
System.Data.OleDb.OleDbException: Errore di sintassi nell'istruzione INSERT INTO. in System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) in System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) in System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) in System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) in System.Data.OleDb.OleDbCommand.ExecuteNonQuery() in Agenda.Salva_Click(Object sender, EventArgs e) in e:\Siti\Agenda\Agenda.aspx.cs:riga 76


mi verrebbe da pensare in un problema di formati tra asp.net e access, ma non riesco a mettere a fuoco il problema....

consigli?
Modificato da Yield il 14 febbraio 2008 18.25 -
Modificato da Yield il 14 febbraio 2008 18.25 -
Non usare la concatenazione di stringhe, utilizza i parameter e vedrai che ti funziona.
Leggi qui:

http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbparameter.aspx
Ne guadagni in sicurezza, performance e ti risolvi tutti questi problemi di formati date, ecc

Ciauz

imperugo
Microsoft MVP
myblog : http://www.tostring.it
78 messaggi dal 01 febbraio 2007
Se provi a inserire una data tipo 01/02/2008 te la fa inserire?

Il nucleo della conoscenza è questo: se la possiedi, applicala; se non la possiedi, confessa la tua ignoranza. (Confucio)
Se provi a inserire una data tipo 01/02/2008 te la fa inserire?

È sbagliato ugualmente.
Non è corretto utilizzare la concatenazione di stringhe, ma vanno usati sempre (e lo sottolineo fino alla morte) i parameters.

Ciauz

imperugo
Microsoft MVP
myblog : http://www.tostring.it
78 messaggi dal 01 febbraio 2007
Molto interessante, non li conoscevo..
Però mi sorge una domanda. Per il problema delle date, formato italiano o americano, si arrangia lui a fare tutto utilizzando parameters?

Il nucleo della conoscenza è questo: se la possiedi, applicala; se non la possiedi, confessa la tua ignoranza. (Confucio)
122 messaggi dal 15 gennaio 2008
imperugo ha scritto:
Non usare la concatenazione di stringhe, utilizza i parameter e vedrai che ti funziona.
Leggi qui:

http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbparameter.aspx
Ne guadagni in sicurezza, performance e ti risolvi tutti questi problemi di formati date, ecc

Ciauz


Ok, appena posso faccio qlc prova e ti faccio sapere :)
Il bello è che te ne freghi del formato, ci pensa lui, tu basta che gli passi l'oggetto DateTime.


imperugo
Microsoft MVP
myblog : http://www.tostring.it
Bravo/a è la soluzione migliore


imperugo
Microsoft MVP
myblog : http://www.tostring.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC