Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-03-2008, 11:21   #1
Bizkaiko
Senior Member
 
L'Avatar di Bizkaiko
 
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
[MySQL] Problema con inserimento date -- URGENTE!!!

Ho un problema un po' strano:
ho 2 applicazioni sviluppate sullo stesso DB MySQL.
Una è un'applicazione Windows fatta in VB.NET, che deve girare solo su 3 pc destinati alla "gestione globale", e l'altra è un sito in Asp.net/vb.

Quando devo inserire un record nella tabella Segnalazioni, la stessa identica query funziona senza problemi nell'applicazione windows, mentre non va nella pagina web.

Ora, io trasformo la data nel formato aaaammgg, e quando lancio la query il risultato che viene fuori è una roba del genere:
INSERT INTO Segnalazioni (descrizione, datainserimento, datasegnalazione) SELECT 'abcabc', NOW(), 20080301)
La stringa è IDENTICA nei due programmi, ma da web non funziona. Connessione odbc per entrambi, tutto esattamente uguale. Perchè quel formato di data non va bene da una parte??? (ho provato a sostituirlo con NOW(), e la query gira, per cui non è la struttura della query il problema...)

Dovrei riuscire da web a sostituire il 20080301 con "20080301", ma se metto
la stringa DataSegnalaz= chr(39) & DataSegnalaz & Chr(39), me lo trasforma in '20080301', col singolo apice, e ovviamente non va bene!!!
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list
Bizkaiko è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2008, 11:27   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Ma datasegnalazione che tipo di dati e' nella tabella? Stringa oppure data?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2008, 11:36   #3
Bizkaiko
Senior Member
 
L'Avatar di Bizkaiko
 
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ma datasegnalazione che tipo di dati e' nella tabella? Stringa oppure data?
E' di tipo data.
Non posso convertirlo in stringa, perchè altrimenti mi complicherebbe non poco i filtri sulle varie ricerche
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list
Bizkaiko è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2008, 11:55   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Bizkaiko Guarda i messaggi
E' di tipo data.
Non posso convertirlo in stringa, perchè altrimenti mi complicherebbe non poco i filtri sulle varie ricerche

Certo, certo, e' la scelta giusta, volevo solo capire se era stata scelta.
Per inserire un campo data direttamente da statement SQL in mysql (e sqlserver) occorre pero' passare una stringa. Sara' il motore a fare il parsing della stringa e trasformare il valore in data prima di memorizzarlo.
La tua prima istruzione dovrebbe essere scritta cosi':
Quote:
INSERT INTO Segnalazioni (descrizione, datainserimento, datasegnalazione) VALUES ('abcabc', NOW(), '20080301')
Questo nel caso tu stessi componendo esplicitamente lo statement SQL da sottomettere al Database.

Perche' in realta' questa scelta non si dovrebbe fare, sopratutto nelle applicazioni WEB. Occorrerebbe lavorare sempre con i parametri, per evitare il dannosissimo e sottostimato problema della SQL-Injection.
Lavorando con i parametri ottieni anche che i dati da inserire per questa istruzione potrebbero rimanere nel loro fomato nativo .net, e non dovrai pensare tu a trasformarli nel formato analogo per il database che usi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2008, 12:06   #5
Bizkaiko
Senior Member
 
L'Avatar di Bizkaiko
 
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
Ed esattamente con i parametri come dovrebbe essere?
Perchè ho fatto un paio di tentativi, ma se gli passavo 20080201 o 01/03/2008 mi dava comunque errore
(grazie per l'aiuto)
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list
Bizkaiko è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2008, 12:24   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Bizkaiko Guarda i messaggi
Ed esattamente con i parametri come dovrebbe essere?
Perchè ho fatto un paio di tentativi, ma se gli passavo 20080201 o 01/03/2008 mi dava comunque errore
(grazie per l'aiuto)
La getto li' al volo, perche' non ho visual studio su questa macchina.

Codice:
string sql=@"INSERT INTO Segnalazioni (descrizione, datainserimento,
datasegnalazione) VALUES (@p1, NOW(), @p2) ";
ISqlCommand pippo=connection.CreateCommand(sql);
pippo.AddParameter("@p1",stringaabcabc);
pippo.AddParameter("@p2",datachevoglio);
pippo.ExecuteNonQuery();
In questo modo stringaabc sara' una stringa del .net, mentre datachevoglio sara' una data del .net, proprio un DateTime, senza mettere apici o altro. (E' una data)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2008, 12:41   #7
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Bizkaiko Guarda i messaggi
Ed esattamente con i parametri come dovrebbe essere?
Perchè ho fatto un paio di tentativi, ma se gli passavo 20080201 o 01/03/2008 mi dava comunque errore
(grazie per l'aiuto)
Prova a passare 2008-02-01: con MySQL faccio così e non mi crea problemi.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2008, 13:41   #8
Bizkaiko
Senior Member
 
L'Avatar di Bizkaiko
 
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
Grazie mille. Adesso provo
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list
Bizkaiko è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2008, 09:22   #9
Bizkaiko
Senior Member
 
L'Avatar di Bizkaiko
 
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
Anche con i parametri, il problema rimaneva...
Se gli passavo 20080301 mi inseriva a riga nella tabella lasciandomi vuoto il campo corrispondente (!!!), passandogli 2008-03-01 mi dava errore di conversione, ho provato qualche altro formato ma niente...

Alla fine ho convertito i campi data in campi integer, la data viene passata col formato aaaammgg, e quando interrogo il db forzo una trasformazione del dato da integer a stringa nel formato "gg/mm/aaaa".
Non sarà il massimo, ma è l'unico modo che ho trovato, visto che dovevo assolutamente terminare per oggi...
Al massimo farò qualche altro tentativo nei prossimi giorni, se trovo una soluzione sostituirò il progetto.
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list
Bizkaiko è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2008, 09:28   #10
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Con i parametri il problema non deve accadere.
Non dovevi passare una stringa '20030801'
ma una vera e propria data, costruita in VB.net come preferito, tipo:

Datetime dt=new DateTime(2003,08,01); (C#, non conosco la sintassi analoga VB.net)
Passando dt come variabile sarebbe andato tutto a posto.

La soluzione con interi va altrettanto bene, a patto che tu non debba mai chiederti la differenza tra 2 date. Sottrarre 2 interi cosi' ovviamente restituisce valori che non hanno senso. Sottrarre invece 2 campi in formato data restituisce su quasi tutti i DB la differenza in giorni fra le 2 date.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2008, 09:49   #11
Bizkaiko
Senior Member
 
L'Avatar di Bizkaiko
 
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
Credimi, è stato forse il primo tentativo che ho fatto.
Ma la query lasciava il campo corrispondente vuoto

Ribadisco, la cosa che più mi lascia perplesso è che la stessa IDENTICA query sull'applicazione windows gira senza problemi, su asp.net no

Ad ogni modo, se dovrò ottenere una differenza tra date, trasformerò i campi corrispondenti da codice e poi userò il datediff: un po' più lento, lo so, ma (per ora) è l'unica
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list
Bizkaiko è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Missione Artemis II diretta verso la Lun...
Toy Story 5 arriva al cinema: è l...
Intel cambia rotta su Linux? Nuove assun...
Samsung aggiorna Bixby con One UI 8.5: p...
L'Etiopia vieta le auto a combustione: a...
Pirateria audiovisiva: la Guardia di Fin...
Ubisoft conferma due nuovi Far Cry in sv...
Chi vincerà il Festival di Sanrem...
G42 e Cerebras portano in India un super...
Offerte aggiornate del weekend Amazon: 7...
4 MacBook Air in offerta e scende a 939€...
Chrome cambia il tuo modo di lavorare: o...
Minimo storico iPhone 17 su Amazon: 909€...
USA, incriminati tre ingegneri della Sil...
Xbox: Phil Spencer lascia dopo 38 anni, ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v