次の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 _ )
これは SQL Server 2005 のためです。 SQL Server 2008 、 SQL Server 2008 R2 、 SQL Server 2012 、および SQL Server 2014 のテーブルの更新バージョンがあります。
次の表は、Microsoft SQL Serverのデータ型、 System.Data.SqlTypes 名前空間にあるSQL Serverの共通言語ランタイム(CLR)に相当するもの、およびMicrosoft .NET Frameworkに相当するネイティブのCLRです。
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と.NET Frameworkは異なるタイプのシステムに基づいています。たとえば、.NET Frameworkの10進数構造体の最大スケールは28ですが、SQL Serverの10進数および数値データ型の最大スケールは38です。ここをクリックしてください リンク !詳しくは
https://msdn.Microsoft.com/ja-jp/library/cc716729(v=vs.110).aspx
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", "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;
}