non si può inserire il valore DBNULL in sql server
-
22-09-2019 - |
Domanda
Perché ottengo questo errore?
Object cannot be cast from DBNull to other types.
quando si inserisce il valore null per un tipo di dati numerici in SQL Server 2005
Ecco il mio codice,
if (MeasurementTr.Visible == true)
{
materialIn.measurementId = Convert.ToInt64(DlMeasurement.SelectedValue.ToString());
}
else
{
materialIn.measurementId = Convert.ToInt64(DBNull.Value);
}
Modifica :
E 'questo diritto ??
materialIn.measurementId = (Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) != 0) ? Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) : 0;
Soluzione
Non è possibile convertire DBNull.Value
a Int64
il tuo codice tenta di fare in Convert.ToInt64
. DBNull.Value
significa "sconosciuto" o "inesistente" e quindi non v'è alcuna conversione logica a qualsiasi altro tipo di dati.
Se l'istanza materialIn
è una qualche forma di DataRow
fortemente tipizzato, avrà un metodo SetMeasurementIdNull
, che è ciò che è necessario utilizzare. Se stai usando LINQ to SQL o EF, non dovrebbe essere necessario a che fare con DBNull
a tutti, si sarebbe invece solo scrivere materialIn.measurementId = null
.
Altri suggerimenti
A causa che Object cannot be cast from DBNull to other types.
Quindi quello che dovete fare è quello di verificare il valore per DBNull
.
materialIn.measurementId = == DlMeasurement.SelectedValue DBNull.Value? 0: Convert.ToInt64 (DlMeasurement.SelectedValue.ToString ());
DBNull non si converte in un Int64. Sarà necessario utilizzare un int nullable e quindi memorizzare null nel valore o fare qualcosa con il valore di rappresentare nulla come ad esempio 0 che possono essere memorizzati nella vostra proprietà.