2011-11-02 26 views
5

Si deseo insertar en una columna de base de datos de tipo char (2) desde C#. ¿Qué tipo de datos usaría en C#?Conversión entre SQL char y C#

Si se utiliza el siguiente código:

private static SqlParameter addParameterValue(string parameterName, ? parameterValue, SqlCommand command) 
    { 
     SqlParameter parameter = new SqlParameter(parameterName, SqlDbType.Char); 
     parameter.Value = parameterValue; 
     command.Parameters.Add(parameter); 
     return parameter; 
    } 

¿Qué tipo daría por parameterValue?

que ya tienen método como este cuando el parameterValue es de tipo cadena, por lo que este podría ser un problema cuando decir la diferencia entre SqlDbType.Char y SqlDbType.Varchar

Respuesta

4

string funcionará bien si es de 2 caracteres o más corto

+0

¿Tan solo tiene que hacer una verificación de longitud en la cadena? – ediblecode

+0

Creo que SQL lanzará una excepción a lo largo de las líneas de 'cadena o los datos binarios se truncarán' en lugar de truncar automáticamente. Depende de la configuración Supongo – flipchart

5

char, varchar, nchar, nvarchar son realmente cadenas

la size ayuda a determinar la longitud de la cadena es ...

por cierto

char tiene una longitud fija, por lo que si usted quiere tener "1" en un char(2) el contenido será real "1 "

varchar(2) habrá "1"

las gradas n parte para Unicode, entonces todo dentro de esos campos estará en Unicode.


normalmente utilizamos nvarchar para ahorrar algo de espacio en los datos, como si usted tiene un char(250) la base de datos guardará siempre la longitud completa, como un vacío varchar(250) no será nada.

En nuestro lenguaje de programación, utilizamos relleno para hacer lo char hace, por ejemplo, en C#

"1".PadLeft(2); 
"1".PadRight(2); 

es la salida " 1" y "1 " respectivamente.

+1

Creo que su ejemplo varchar es incorrecto. –

1

trate de usar el método AddWithValue y parce que como cadena,

es sólo una sola línea. no es necesario tener un método separado

command.Parameters.AddWithValue(parameterName, parameterValue); 
+0

muchas gracias, esto ha reducido un poco mi código. Aunque heredé este método. – ediblecode

Cuestiones relacionadas