source

C# SQL Server Data Types 등가

manycodes 2023. 4. 21. 21:05
반응형

C# SQL Server Data Types 등가

다음 SQL Server 데이터 타입의 경우 C#에서 대응하는 데이터 타입은 무엇입니까?

정확한 수치

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

대략적인 숫자

float
real

일시

date
datetimeoffset
datetime2
smalldatetime
datetime
time

문자열

char
varchar
text

유니코드 문자열

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에 대한 테이블의 업데이트된 버전이 있습니다.

[ SQL Server Data Types ]와 [Thes]를 참조해 주세요.NET Framework 등가물

다음 표에 Microsoft SQL Server 데이터 유형 및 시스템 내 SQL Server 공용 언어 런타임(CLR)에 해당하는 데이터 유형을 나타냅니다.Microsoft Data.SqlTypes 네임스페이스 및 네이티브 CLR 등가물.NET 프레임워크

SQL 서버 데이터 유형 CLR 데이터 유형(SQL Server) CLR 데이터 유형(.NET 프레임워크)
바이너리 SqlBytes, SqlBinary 바이트[]
바이너리 SqlBytes, SqlBinary 바이트[]
바이너리(1), 바이너리(1) SqlBytes, SqlBinary 바이트, 바이트[]
이미지 없음. 없음.
바카 없음. 없음.
없음. 없음.
nvarchar(1), nchar(1) SqlChars, SqlString 문자, 문자열, 문자 []
nvarchar SqlChars, SqlString 문자열, 문자 []
nchar SqlChars, SqlString 문자열, 문자 []
본문 없음. 없음.
텍스트 없음 없음. 없음.
고유 식별자 SqlGuid GUID
행의 반전 없음. 바이트[]
조금 SqlBoolean 부울
작은 구멍 SQLByte 바이트
스몰인트 SqlInt16 Int16
인트 SqlInt32 Int32
비긴트 SqlInt64 Int64
잔돈 SQLMoney 십진수
돈. SQLMoney 십진수
숫자 Sql Decimal 십진수
십진수 Sql Decimal 십진수
진짜 SqlSingle 싱글
흘러가다 SQL Double 이중
같은 시간 Sql Date Time (Sql Date Time) 날짜 시간
날짜 Sql Date Time (Sql Date Time) 날짜 시간
sql_module 없음. 물건
사용자 정의 유형(UDT) 없음. 사용자 정의형
테이블 없음. 없음.
커서 없음. 없음.
타임스탬프 없음. 없음.
xml SqlXml 없음.

SQL Server 및.넷 데이터 유형 매핑

SQL Server 및.

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

편집: 오탈자 수정

SQL Server 및.NET Framework는 다양한 유형의 시스템을 기반으로 합니다.예를 들어, 입니다.NET Framework Decimal 구조의 최대 배율은 28이지만 SQL Server의 10진수 및 숫자 데이터 유형은 38입니다.자세한 내용은 여기를 클릭하세요!

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

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

언급URL : https://stackoverflow.com/questions/425389/c-sharp-equivalent-of-sql-server-datatypes

반응형