c# .net vb.net ado.net

c# - Diferencia con Parameters.Add y Parameters.AddWithValue



.net vb.net (3)

Básicamente Commands tiene Parameters y parámetros tiene funciones como Add , AddWithValue , y etc. En todos los tutoriales que he visto, usualmente noté que están usando Add lugar de AddWithValue .

.Parameters.Add("@ID", SqlDbType.Int)

vs

.Parameters.AddWithValue("@ID", 1)

¿Hay alguna razón para NO usar AddWithValue ? Prefiero usar eso de nuevo

Parameters.Add("@ID", SqlDbType.Int, 4).Value = 1

ya que ahorra mi tiempo de codificación. Entonces, ¿cuál es mejor usar? ¿Cuál es seguro de usar? ¿Mejora el rendimiento?


Con el método Add() puede restringir la entrada del usuario especificando el tipo y la longitud de los datos, especialmente para columnas varchar .

.Parameters.Add("@name",SqlDbType.VarChar,30).Value=varName;

En el caso del AddWithValue() (conversión implícita de valor), envía el valor nvarchar a la base de datos.


Creo que también hay algunos inconvenientes en el uso de AddWithValue que afectan el plan de excepción de caché de SQL, consulte la sección de longitud de parámetros here


Usaría AddWithValue para casos normales. Y use Add (name, dbtype ... solo cuando el tipo de columna sea diferente de cómo .net convierte el tipo CLR.