C#相当于SQL服务器数据类型

对于以下SQL服务器数据类型,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

631849 次浏览

这是针对SQLServer 2005的。有SQLServer 2008SQLServer 2008 R2SQLServer 2012SQLServer 2014的表的更新版本。

SQL服务器数据类型及其. NET Framework等效项

下表列出了MicrosoftSQLServer数据类型、它们在数据库类型命名空间中SQLServer的公共语言运行时(CLR)中的等价物,以及它们在Microsoft. NET Framework中的本机CLR等价物。

SQL服务器数据类型 CLR数据类型(SQL服务器) CLR数据类型(. NET Framework)
二元 SqlBytes, SqlBux 字节[]
二进制 SqlBytes, SqlBux 字节[]
二进制(1),二进制(1) SqlBytes, SqlBux 字节,字节[]
图像
varchar
char
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[]
nvarchar SqlChars, SqlString 字符串,字符[]
nchar SqlChars, SqlString 字符串,字符[]
文本
ntext
唯一标识符 SqlGuid Guid
行版本 字节[]
sqlboolean 布尔
tinyint sqlbyte 字节
小点 SqlInt16 Int16
int SqlInt32 Int32
bigint SqlInt64 Int64
小钱 SqlMoney 十进制
SqlMoney 十进制
数字 SqlDecimal 十进制
十进制 SqlDecimal 十进制
真正 SqlSing 单一
浮动 SqlDouble 双倍
小日期时间 当前操作时间SqlDateTime 时间戳
datetime 当前操作时间SqlDateTime 时间戳
sql_variant 对象
用户定义类型(UDT) 用户定义类型
游标
时间戳
xml SqlXml

SQLServer和. NET Framework基于不同的类型系统。例如,. NET Framework Decimal结构的最大缩放为28,而SQLServer decimal和数字数据类型的最大缩放为38。单击这里的一个链接!了解详细信息

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

SQLServer和. Net数据类型映射

SQL服务器和. net数据类型映射

如果有人正在寻找从/转换为C#和SQL服务器格式的方法,这里有一个简单的实现:

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

编辑:固定错字

public static string FromSqlType(string sqlTypeString)
{
if (! Enum.TryParse(sqlTypeString, out Enums.SQLType typeCode))
{
throw new Exception("sql type not found");
}
switch (typeCode)
{
case Enums.SQLType.varbinary:
case Enums.SQLType.binary:
case Enums.SQLType.filestream:
case Enums.SQLType.image:
case Enums.SQLType.rowversion:
case Enums.SQLType.timestamp://?
return "byte[]";
case Enums.SQLType.tinyint:
return "byte";
case Enums.SQLType.varchar:
case Enums.SQLType.nvarchar:
case Enums.SQLType.nchar:
case Enums.SQLType.text:
case Enums.SQLType.ntext:
case Enums.SQLType.xml:
return "string";
case Enums.SQLType.@char:
return "char";
case Enums.SQLType.bigint:
return "long";
case Enums.SQLType.bit:
return "bool";
case Enums.SQLType.smalldatetime:
case Enums.SQLType.datetime:
case Enums.SQLType.date:
case Enums.SQLType.datetime2:
return "DateTime";
case Enums.SQLType.datetimeoffset:
return "DateTimeOffset";
case Enums.SQLType.@decimal:
case Enums.SQLType.money:
case Enums.SQLType.numeric:
case Enums.SQLType.smallmoney:
return "decimal";
case Enums.SQLType.@float:
return "double";
case Enums.SQLType.@int:
return "int";
case Enums.SQLType.real:
return "Single";
case Enums.SQLType.smallint:
return "short";
case Enums.SQLType.uniqueidentifier:
return "Guid";
case Enums.SQLType.sql_variant:
return "object";
case Enums.SQLType.time:
return "TimeSpan";
default:
throw new Exception("none equal type");
}
}


public enum SQLType
{
varbinary,//(1)
binary,//(1)
image,
varchar,
@char,
nvarchar,//(1)
nchar,//(1)
text,
ntext,
uniqueidentifier,
rowversion,
bit,
tinyint,
smallint,
@int,
bigint,
smallmoney,
money,
numeric,
@decimal,
real,
@float,
smalldatetime,
datetime,
sql_variant,
table,
cursor,
timestamp,
xml,
date,
datetime2,
datetimeoffset,
filestream,
time,
}