C # SQL Server DataTypes eşdeğeri


594

Aşağıdaki SQL Server veri türleri için, C # 'da karşılık gelen veri türü olurdu?

Tam Sayısallar

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

Yaklaşık Sayılar

float
real

Tarih ve saat

date
datetimeoffset
datetime2
smalldatetime
datetime
time

Karakter Dizeleri

char
varchar
text

Unicode Karakter Dizeleri

nchar
nvarchar
ntext

İkili Dizeler

binary
varbinary
image

Diğer Veri Türleri

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(kaynak: MSDN )


1
Aradığın şey budur: CLR Parametre Verilerini Eşleme
Andrew Hare

Yanıtlar:


1092

Bu SQL Server 2005 içindir . SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 ve SQL Server 2014 için tablonun güncellenmiş versiyonları vardır .

SQL Server Veri Türleri ve .NET Framework Eşdeğerleri

Aşağıdaki tabloda, Microsoft SQL Server veri türleri, bunların System.Data.SqlTypes ad alanındaki SQL Server için ortak dil çalışma zamanındaki (CLR) eşdeğerleri ve Microsoft .NET Framework'teki yerel CLR eşdeğerleri listelenmektedir .

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, bu tabloda Int32 ile aynıdır, bu yüzden SQL Server'da da bir int olacaktır.
Örjan Jämte

short.Net çerçevesinde hangi CLR veri türü (SQL Server) kullanılmalıdır ?
Yogesh Patel

3
@yogeshpatel, short( docs.microsoft.com/en-us/dotnet/csharp/language-reference/… ) bu listedeki System.Int16'ya eşittir. Bu SQL Server'da küçük olur.
Örjan Jämte


7

SQL Server ve .NET Framework farklı tür sistemlere dayanmaktadır. Örneğin, .NET Framework Ondalık yapısı maksimum 28 ölçeğine sahipken, SQL Server ondalık ve sayısal veri türleri maksimum 38 ölçeğine sahiptir. Tıklayın İşte bir bağlantı ! detay için

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


Bu cevap için neden -1 aldığımı açıklayabilir misiniz ??
Salman

8
Cevabı küçümseyen ben değildim, ama ideal olarak soruyu cevaplamalısınız, onunla bir bağlantı sağlamayın.
Esteban Verbel

6

Herhangi birinin / C # ve SQL Server biçimlerine dönüştürmek için yöntemler araması durumunda, basit bir uygulama:

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

Düzenleme: sabit yazım hatası

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.