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
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.
Utilisez "SByte" pour que le problème de Tiny Int soit traité
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.