Technology ASP.Net 2.0 + MySql + Boolean

Liam Gallagher

Typing Monkey
Probabilmente non glie ne stra-fotterà a nessuno ma chi lo sa che qualcuno cerca sta roba, considerando che in rete tutti dan testate al muro su sto problema e nessuno risponde in modo chiaro... non c'ho dormito tutta la notte indi lo scrivo...

Il problema e' che il MySql non supporta valori "boolean" in standard Access/Sql Server quindi diventa problematico utilizzare i comodissimi e bellissimi CheckBoxField della GridView e i CheckBoxField del DetailsView per fare le insert.. la soluzione e' la seguente:

1. Nel db mysql specificate il campo che dovrà essere boolean come ENUM('True','False') NOT NULL, Default Value 'False', deve essere precisamente cosi o non cammina manco morto...
2. Nel codice nella sezione <UpdateParameters> non mettete il parametro come Type="Boolean" ma come Type="String", presto fatto l'engine dell'"update" della GridView funziona senza dire ne a ne b con una normale query di update e le normalissime variabili, trattate tutto come string e funzionerà.
3. Per far camminare la insert invece serve un cazzo di barbatrucco che a pensarci e' una cagata... usando una DetailsView per fare le insert il valore che esce dal CheckBoxField NON e' compatibile con il database sotto forma di ENUM('True','False'), il trucco del cazzo e' specificare nel SqlDataSource un simpaticissimo <InsertParameters><asp:Parameter Name="sticazzi" Type="String"></InsertParameters> con questa puttanatella il valore booleano del checkbox per la insert viene tradotto in testuale True/False che e' perfettamente compatibile con la vostra tabella.

In parole povere, l'incompatibilità di base per cui la GridView riesce a interpretare True/False come string per mostrare i checkbox mentre la insert non li digerisce viene sistemata passando tutto a stringa e sticazzi al booleano di base... ok si spreca del gran spazio nel db passando da un tinyint(1) a un ENUM ma sticazzi :)

Morale della favola, tutte le funzioni comodissime e amatissime del ASP.Net diventano utilizzabili senza una riga di VB o C# e senza andare a interpretare i valori manualmente e convertirli in chissa cosa.

PS: tanto non ve ne fotte una sega ma pazienza...
 
Alto