Équivalent C # des DataTypes SQL Server

594

Pour les types de données SQL Server suivants, quel serait le type de données correspondant en C #?

Numérique exacte

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

Numériques approximatifs

float
real

Date et l'heure

date
datetimeoffset
datetime2
smalldatetime
datetime
time

Chaînes de caractères

char
varchar
text

Chaînes de caractères Unicode

nchar
nvarchar
ntext

Chaînes binaires

binary
varbinary
image

Autres types de données

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(source: MSDN )

George Stocker
la source
1
Je pense que c'est ce que vous cherchez peut-être: Cartographie des données de paramètres CLR
Andrew Hare

Réponses:

1093

C'est pour SQL Server 2005 . Il existe des versions mises à jour du tableau pour SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 et SQL Server 2014 .

Types de données SQL Server et leurs équivalents .NET Framework

Le tableau suivant répertorie les types de données Microsoft SQL Server, leurs équivalents dans le Common Language Runtime (CLR) pour SQL Server dans l' espace de noms System.Data.SqlTypes et leurs équivalents CLR natifs dans Microsoft .NET Framework.

SQL Server data type          CLR data type (SQL Server)    CLR data type (.NET Framework)  
varbinary                     SqlBytes, SqlBinary           Byte[]  
binary                        SqlBytes, SqlBinary           Byte[]  
varbinary(1), binary(1)       SqlBytes, SqlBinary           byte, Byte[] 
image                         None                          None

varchar                       None                          None
char                          None                          None
nvarchar(1), nchar(1)         SqlChars, SqlString           Char, String, Char[]     
nvarchar                      SqlChars, SqlString           String, Char[] 
nchar                         SqlChars, SqlString           String, Char[] 
text                          None                          None
ntext                         None                          None

uniqueidentifier              SqlGuid                       Guid 
rowversion                    None                          Byte[]  
bit                           SqlBoolean                    Boolean 
tinyint                       SqlByte                       Byte 
smallint                      SqlInt16                      Int16  
int                           SqlInt32                      Int32  
bigint                        SqlInt64                      Int64 

smallmoney                    SqlMoney                      Decimal  
money                         SqlMoney                      Decimal  
numeric                       SqlDecimal                    Decimal  
decimal                       SqlDecimal                    Decimal  
real                          SqlSingle                     Single  
float                         SqlDouble                     Double  

smalldatetime                 SqlDateTime                   DateTime  
datetime                      SqlDateTime                   DateTime 

sql_variant                   None                          Object  
User-defined type(UDT)        None                          user-defined type     
table                         None                          None 
cursor                        None                          None
timestamp                     None                          None 
xml                           SqlXml                        None
Örjan Jämte
la source
2
int dans .NET est identique à Int32 dans ce tableau, il s'agirait donc également d'un int dans SQL Server.
Örjan Jämte
Quel type de données CLR (SQL Server) doit être utilisé shortdans le framework .Net?
Yogesh Patel
3
@yogeshpatel, short( docs.microsoft.com/en-us/dotnet/csharp/language-reference/… ) est égal à System.Int16 dans cette liste. Ce serait donc petit dans SQL Server.
Örjan Jämte
34

Mappage de types de données SQL Server et .Net

Mappage de types de données SQL Server et .Net

Must.Tek
la source
7

SQL Server et .NET Framework sont basés sur des systèmes de types différents. Par exemple, la structure décimale .NET Framework a une échelle maximale de 28, tandis que les types de données décimaux et numériques SQL Server ont une échelle maximale de 38. Cliquez sur Voici un lien ! pour les détails

https://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx

Salman
la source
Pouvez-vous expliquer pourquoi j'obtiens -1 pour cette réponse ??
Salman
8
Ce n'est pas moi qui ai rétrogradé la réponse, mais dans l'idéal, vous devriez répondre à la question, pas fournir un lien avec celle-ci.
Esteban Verbel
6

Au cas où quelqu'un chercherait des méthodes pour convertir de / vers les formats C # et SQL Server, voici une implémentation simple:

private readonly string[] SqlServerTypes = { "bigint", "binary", "bit",  "char", "date",     "datetime", "datetime2", "datetimeoffset", "decimal", "filestream", "float",  "geography",                              "geometry",                              "hierarchyid",                              "image",  "int", "money",   "nchar",  "ntext",  "numeric", "nvarchar", "real",   "rowversion", "smalldatetime", "smallint", "smallmoney", "sql_variant", "text",   "time",     "timestamp", "tinyint", "uniqueidentifier", "varbinary", "varchar", "xml" };
private readonly string[] CSharpTypes    = { "long",   "byte[]", "bool", "char", "DateTime", "DateTime", "DateTime",  "DateTimeOffset", "decimal", "byte[]",     "double", "Microsoft.SqlServer.Types.SqlGeography", "Microsoft.SqlServer.Types.SqlGeometry", "Microsoft.SqlServer.Types.SqlHierarchyId", "byte[]", "int", "decimal", "string", "string", "decimal", "string",   "Single", "byte[]",     "DateTime",      "short",    "decimal",    "object",      "string", "TimeSpan", "byte[]",    "byte",    "Guid",             "byte[]",    "string",  "string" };

public string ConvertSqlServerFormatToCSharp(string typeName)
{
    var index = Array.IndexOf(SqlServerTypes, typeName);

    return index > -1
        ? CSharpTypes[index]
        : "object";
}

public string ConvertCSharpFormatToSqlServer(string typeName)
{
    var index = Array.IndexOf(CSharpTypes, typeName);

    return index > -1
        ? SqlServerTypes[index]
        : null;
}

Modifier: correction de faute de frappe

AndreFeijo
la source