C # Setara dengan SQL Server DataTypes


594

Untuk tipe data SQL Server berikut, apa yang akan menjadi tipe data yang sesuai di C #?

Numerik Tepat

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

Perkiraan Numerik

float
real

Tanggal dan waktu

date
datetimeoffset
datetime2
smalldatetime
datetime
time

String Karakter

char
varchar
text

String Karakter Unicode

nchar
nvarchar
ntext

String Biner

binary
varbinary
image

Tipe Data Lainnya

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(sumber: MSDN )


1
Saya rasa ini adalah apa yang Anda mungkin mencari: Pemetaan CLR Parameter Data
Andrew Kelinci

Jawaban:


1093

Ini untuk SQL Server 2005 . Ada versi yang diperbarui dari tabel untuk SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 dan SQL Server 2014 .

Tipe Data SQL Server dan .NET Framework Equivalents

Tabel berikut mencantumkan tipe data Microsoft SQL Server, padanannya dalam runtime bahasa umum (CLR) untuk SQL Server di namespace System.Data.SqlTypes , dan padanan CLR asli dalam 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 di .NET adalah sama dengan Int32 dalam tabel ini, jadi itu akan menjadi int di SQL Server juga.
Örjan Jämte

Jenis data CLR (SQL Server) mana yang harus digunakan shortdalam .Net framework?
Yogesh Patel

3
@yogeshpatel, short( docs.microsoft.com/en-us/dotnet/csharp/language-reference/… ) sama dengan System.Int16 dalam daftar ini. Jadi itu akan menjadi smallint di SQL Server.
Örjan Jämte


7

SQL Server dan .NET Framework didasarkan pada berbagai jenis sistem. Misalnya, struktur .NET Framework Decimal memiliki skala maksimum 28, sedangkan tipe data desimal dan numerik SQL Server memiliki skala maksimum 38. Klik di sini ada tautan ! untuk detail

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


Bisakah Anda jelaskan mengapa saya mendapatkan -1 untuk jawaban ini ??
Salman

8
Bukan saya yang menurunkan jawaban, tetapi idealnya Anda harus menjawab pertanyaan, bukan memberikan tautan.
Esteban Verbel

6

Jika ada yang mencari metode untuk mengkonversi dari / ke C # dan format SQL Server, begini penerapannya sederhana:

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

Edit: kesalahan ketik tetap

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.