web-dev-qa-db-fra.com

Comment pouvez-vous convertir "tinyint" de t-sql en entier en c #?

J'ai une colonne tinyint dans la base de données et je souhaite la convertir en Int32 pour une SqlDataReader.

Comment puis-je m'y prendre?

Edit # 1

J'ai récemment dû faire cela. 

int a = dataReader.GetByte(dr.GetOrdinal("ColumnName"));

#In addition à la réponse

Mappages de type de données SQL Server

bigint           - GetInt64  
binary           - GetBytes  
int              - GetInt32  
money            - GetDecimal  
rowversion       - GetBytes  
smallint         - GetInt16  
tinyint          - GetByte  
uniqueidentifier - GetGuid   
...

Pour plus d'informations, visitez le site/ Mappages de types de données SQL Server

58
Tebo

Qu'est-ce qu'il revient normalement sous forme d'octet? Si tel est le cas, il suffit de faire un unbox puis un converti:

(int)(byte) reader["column"];

ou simplement laisser la conversion se faire naturellement:

int x = (byte) reader["column"];

ou faire la même chose avec les méthodes fortement typées:

int x = reader.GetByte(column);

Ajustez ceci à sbyte ou short ou peu importe si je me trompe à propos du mappage à byte. Vous pouvez effectuer la conversion du côté SQL Server, mais personnellement, je le ferais du côté client et je garderais le code SQL plus simple.

86
Jon Skeet

Utilisez "SByte" pour que le problème de Tiny Int soit traité 

2
Pec1983

Pour obtenir un tinyint d'une table SQL, procédez comme suit:

retorno = Convert.ToInt32(dr.GetByte(dr.GetOrdinal("StepStatus")));

Où retorno est une variable int.

J'espère que cela vous aidera.

int RetValue;
RetValue = (int)(byte)dt.Rows[A][B]  // A = RowNo , B = 'tinyint' Column Name.
0
Rajesh Abraham