Pregunta

Al acceder a un objeto en una DataTable recuperada de una base de datos, ¿existen razones para no convertir el objeto en el tipo deseado o existen razones para utilizar convertir? Sé que la regla se establece cuando sabemos con qué tipo de datos estamos trabajando, y la conversión cuando intentamos cambiar el tipo de datos a algo que no es. Suponiendo que sabemos qué tipo de datos se almacena en una columna, la conversión parece apropiada, pero ¿hay algún tipo de problema de base de datos que signifique que no podemos confiar en esto?

¿Fue útil?

Solución

Siempre emitiría, por las razones que indiques. Los errores que tengo en cuenta son:

  1. Obviamente, necesitas poder manejar DBNulls (por ejemplo, probando con Convert.IsDBNull)

  2. En el caso de ExecuteScalar, creo que debe comprobar si hay null y DBNull.

  3. Las funciones de los servidores SQL @@ IDENTITY y SCOPE_IDENTITY devuelven numérico (decimal) incluso para las columnas que se declaran como INT. En este caso, puede emitir dos veces el valor " (int) (decimal) " o manejarlo en el código T-SQL, por ejemplo: .

    INSERTAR EN MyTable ... SELECCIONE AutoIdColumn DE MyTable DONDE AutoIdColumn = SCOPE_IDENTITY ()

o

INSERT INTO MyTable ...
SELECT CAST(SCOPE_IDENTITY() AS INT)

Otros consejos

Tanto CAST como CONVERT se utilizan para convertir explícitamente una expresión de un tipo de datos a otro. Sin embargo, con CONVERT también puede especificar el estilo de estilo.

Sintaxis para CAST:

CAST ( expression AS data_type [ (length ) ])

Sintaxis para CONVERTIR:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Al volver a salir de RDBMS, debe permitir que el controlador de la base de datos maneje la clasificación entre el tipo nativo y el solicitado.

CAST está aprobado por los estándares de SQL y funciona en el mayor número de plataformas RDBMS.

CONVERT está disponible en menos plataformas.

Si tiene consideraciones multiplataforma, CONVERTIR se debe usar solo para casos especiales, como el formato personalizado que no se puede realizar con CAST.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top