Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-03-2008, 10: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, 10: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, 10: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, 10: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, 11: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, 11: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, 11: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, 12: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, 08: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, 08: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, 08: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


realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Big Fish, in Sicilia il più grand...
Dongfeng mostra la piattaforma T1 in Eur...
Centinaia di vittime per aver scaricato ...
File di Excel illeggibili su LibreOffice...
Grok 4.7 raddoppia la velocità e dimezza...
Sembra uscito da Halo ma è un cas...
Fable 2 su PC a 60 FPS: il port non uffi...
Amazfit T-Rex Dual Solar: ecco il nuovo ...
Fermati 45 maxi-progetti IA negli USA. T...
Niente datacenter a Turbigo: il sindaco ...
OPPO Creator Academy, al via il progetto...
Un annuncio di lavoro, un file da scaric...
Tim Cook riceverà il Robert N. No...
Meta ha annunciato Petal, il primo cavo ...
Resident Evil Veronica, l'uscita potrebb...
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: 16:47.


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