2011-11-02 25 views
5

Se voglio inserire in una colonna del database di tipo char (2) da C#. Quale tipo di dati dovrei usare in C#?Conversione tra SQL char e C#

Se si utilizza il seguente codice:

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; 
    } 

Che darei per ParameterValue?

Ho già metodo come questo quando il ParameterValue è di tipo stringa, quindi questo potrebbe essere un problema quando dire la differenza tra SqlDbType.Char e SqlDbType.Varchar

risposta

4

string funzionerà bene se è 2 caratteri o più breve

+0

Quindi, è sufficiente eseguire un controllo della lunghezza sulla stringa? – ediblecode

+0

Penso che SQL genererà un'eccezione lungo le linee di 'stringa o dati binari verrebbero troncati' piuttosto che troncare automaticamente. Dipende dal setup suppongo che – flipchart

5

char, varchar, nchar, nvarchar sono stringhe in realtà

il size aiuta a determinare quanto tempo la stringa è ...

dal modo in cui

char ha una lunghezza fissa, quindi se si vuole avere "1" in un char(2) i contenuti saranno effettive "1 "

varchar(2) sarà "1"

gli stand n parte per unicode, quindi tutto all'interno di quei campi sarà in Unicode.


normalmente usiamo nvarchar per risparmiare spazio sui dati, come se si dispone di un char(250) database salverà sempre l'intera lunghezza, come un vuoto varchar(250) sarà nulla.

Nel nostro linguaggio di programmazione abbiamo poi utilizziamo imbottitura di fare ciò che char fa, per esempio, in C#, rispettivamente

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

uscita volontà " 1" e "1 ".

+1

penso che il tuo esempio varchar sia sbagliato. –

1

prova utilizzando il metodo AddWithValue e Parce come stringa,

è solo una linea uno. non c'è bisogno di avere un metodo separato.

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

grazie mille, questo ha accorciato leggermente il mio codice. Anche se ho ereditato questo metodo. – ediblecode