C # -Äquivalent zu SQL Server-Datentypen

594

Was wäre für die folgenden SQL Server-Datentypen der entsprechende Datentyp in C #?

Genaue Zahlen

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

Ungefähre Zahlen

float
real

Datum (und Uhrzeit

date
datetimeoffset
datetime2
smalldatetime
datetime
time

Zeichenketten

char
varchar
text

Unicode-Zeichenfolgen

nchar
nvarchar
ntext

Binäre Zeichenfolgen

binary
varbinary
image

Andere Datentypen

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(Quelle: MSDN )

George Stocker
quelle
1
Ich denke, das ist, wonach Sie suchen könnten: Zuordnung von CLR-Parameterdaten
Andrew Hare

Antworten:

1092

Dies ist für SQL Server 2005 . Es gibt aktualisierte Versionen der Tabelle für SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 und SQL Server 2014 .

SQL Server-Datentypen und ihre .NET Framework-Entsprechungen

In der folgenden Tabelle sind die Microsoft SQL Server-Datentypen, ihre Entsprechungen in der Common Language Runtime (CLR) für SQL Server im Namespace System.Data.SqlTypes und ihre nativen CLR-Entsprechungen in Microsoft .NET Framework aufgeführt.

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
quelle
2
int in .NET ist dasselbe wie Int32 in dieser Tabelle, daher wäre es auch ein int in SQL Server.
Örjan Jämte
Für welchen CLR-Datentyp (SQL Server) sollte shortim .Net-Framework verwendet werden?
Yogesh Patel
3
@yogeshpatel short( docs.microsoft.com/en-us/dotnet/csharp/language-reference/… ) entspricht in dieser Liste System.Int16. Das wäre also eine Kleinigkeit in SQL Server.
Örjan Jämte
34

SQL Server- und .Net-Datentypzuordnung

SQL Server- und .Net-Datentypzuordnung

Must.Tek
quelle
7

SQL Server und .NET Framework basieren auf Systemen unterschiedlichen Typs. Beispielsweise hat die .NET Framework-Dezimalstruktur eine maximale Skalierung von 28, während die dezimalen und numerischen SQL Server-Datentypen eine maximale Skalierung von 38 haben. Klicken Sie hier ist ein Link ! für Details

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

Salman
quelle
Können Sie bitte erklären, warum ich für diese Antwort -1 bekomme?
Salman
8
Ich war es nicht, der die Antwort abgelehnt hat, aber im Idealfall sollten Sie die Frage beantworten und keinen Link dazu bereitstellen.
Esteban Verbel
6

Falls jemand nach Methoden zum Konvertieren von / in C # - und SQL Server-Formate sucht, folgt eine einfache Implementierung:

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

Bearbeiten: Tippfehler behoben

AndreFeijo
quelle