Pour les types de données SQL Server suivants, quel serait le type de données correspondant en C #?
Chiffres Exacts
bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money
Chiffres approximatifs
float
real
Date et heure
date
datetimeoffset
datetime2
smalldatetime
datetime
time
Chaînes de caractères
char
varchar
text
Chaînes de caractères Unicode
nchar
nvarchar
ntext
Chaînes binaires
binary
varbinary
image
Autres types de données
cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table
(source: MSDN )
Ceci est pour SQL Server 2005 . Il existe des versions mises à jour de la table pour SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 et SQL Server 2014 .
Le tableau suivant répertorie les types de données Microsoft SQL Server, leurs équivalents dans le common language runtime (CLR) de SQL Server dans l'espace de noms System.Data.SqlTypes et leurs équivalents CLR natifs dans 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
SQL Server et .NET Framework sont basés sur différents systèmes de types. Par exemple, la structure décimale .NET Framework a une échelle maximale de 28, tandis que les types de données décimaux et numériques SQL Server ont une échelle maximale de 38. Cliquez sur Voici n lien ! pour les détails
https://msdn.Microsoft.com/en-us/library/cc716729 (v = vs.110) .aspx
Si quelqu'un cherche des méthodes pour convertir les formats de/vers C # et SQL Server, voici une implémentation simple:
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", "bite[]", "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;
}