C # equivalente di SQL Server DataTypes


594

Per i seguenti tipi di dati di SQL Server, quale sarebbe il tipo di dati corrispondente in C #?

Numerici esatti

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

Numeri approssimativi

float
real

Data e ora

date
datetimeoffset
datetime2
smalldatetime
datetime
time

Stringhe di caratteri

char
varchar
text

Stringhe di caratteri Unicode

nchar
nvarchar
ntext

Stringhe binarie

binary
varbinary
image

Altri tipi di dati

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(fonte: MSDN )


1
Penso che questo sia quello che potresti cercare: Mapping dei dati dei parametri CLR
Andrew Hare

Risposte:


1093

Questo è per SQL Server 2005 . Esistono versioni aggiornate della tabella per SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 e SQL Server 2014 .

Tipi di dati di SQL Server e loro equivalenti .NET Framework

Nella tabella seguente sono elencati i tipi di dati di Microsoft SQL Server, i loro equivalenti nel Common Language Runtime (CLR) per SQL Server nello spazio dei nomi System.Data.SqlTypes e i loro equivalenti CLR nativi in ​​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

2
int in .NET è uguale a Int32 in questa tabella, quindi sarebbe un int anche in SQL Server.
Örjan Jämte,

Per quale tipo di dati CLR (SQL Server) utilizzare shortin .Net framework?
Yogesh Patel,

3
@yogeshpatel, short( docs.microsoft.com/en-us/dotnet/csharp/language-reference/… ) è uguale a System.Int16 in questo elenco. Quindi sarebbe piccolo in SQL Server.
Örjan Jämte,


7

SQL Server e .NET Framework sono basati su sistemi di tipo diverso. Ad esempio, la struttura decimale di .NET Framework ha una scala massima di 28, mentre i tipi di dati decimali e numerici di SQL Server hanno una scala massima di 38. Fare clic su Ecco un collegamento ! per i dettagli

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


Puoi spiegare perché ottengo -1 per questa risposta ??
Salman,

8
Non sono stato io a sottovalutare la risposta, ma idealmente dovresti rispondere alla domanda, senza fornire un collegamento con essa.
Esteban Verbel,

6

Nel caso in cui qualcuno stia cercando metodi per convertire da / in formati C # e SQL Server, ecco una semplice implementazione:

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

Modifica: errore di battitura fisso

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.