C # еквівалент типів даних SQL Server


594

Для наступних типів даних SQL Server, який би був відповідний тип даних у C #?

Точні цифри

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

Орієнтовна чисельність

float
real

Дата і час

date
datetimeoffset
datetime2
smalldatetime
datetime
time

Символьні рядки

char
varchar
text

Unicode символьні рядки

nchar
nvarchar
ntext

Двійкові рядки

binary
varbinary
image

Інші типи даних

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(джерело: MSDN )


1
Я думаю, це саме те, що ви можете шукати: Картографування даних параметрів CLR
Ендрю Заєць

Відповіді:


1091

Це для SQL Server 2005 . Існують оновлені версії таблиці для SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 та SQL Server 2014 .

Типи даних SQL Server та їх еквіваленти .NET Framework

У наступній таблиці перераховані типи даних Microsoft SQL Server, їх еквіваленти в загальній мові виконання (CLR) для SQL Server у просторі імен System.Data.SqlTypes та їх рідні еквіваленти CLR у 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 в .NET - це те саме, що і Int32 у цій таблиці, тому це також буде int у SQL Server.
Örjan Jämte

Який тип даних CLR (SQL Server) слід використовувати shortв .Net Framework?
Йогеш Патель

3
@yogeshpatel, short( docs.microsoft.com/en-us/dotnet/csharp/language-reference/… ) дорівнює System.Int16 у цьому списку. Так що це було б мало в SQL Server.
Örjan Jämte


7

SQL Server і .NET Framework базуються на системах різного типу. Наприклад, структура .NET Framework Decimal має максимальну шкалу 28, тоді як десятичні та числові типи даних SQL Server мають максимальну шкалу 38. Натисніть Ось посилання ! для деталей

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


Чи можете ви поясніть, чому я отримую -1 за цю відповідь ??
Салман

8
Я не спростував відповідь, але в ідеалі ви повинні відповісти на питання, а не наводити посилання на нього.
Естебан Вербель

6

Якщо хтось шукає способів перетворення з / у формати C # і SQL Server, тут йде проста реалізація:

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

Редагування: виправлена ​​помилка

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.