736 Stimmen

C#-Entsprechung von SQL Server DataTypes

Wie lautet der entsprechende Datentyp für die folgenden SQL Server-Datentypen in C#?

Genaue Numerik

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

Annähernde Numerik

float
real

Datum und Uhrzeit

date
datetimeoffset
datetime2
smalldatetime
datetime
time

Zeichenketten

char
varchar
text

Unicode-Zeichenketten

nchar
nvarchar
ntext

Binäre Zeichenketten

binary
varbinary
image

Andere Datentypen

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(Quelle: MSDN )

1308voto

Örjan Jämte Punkte 13347

Dies ist für SQL Server 2005 . Es gibt aktualisierte Versionen der Tabelle für SQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012 y SQL Server 2014 .

SQL Server-Datentypen und ihre .NET Framework-Entsprechungen

In der folgenden Tabelle sind die Microsoft SQL Server-Datentypen und ihre Entsprechungen in der Common Language Runtime (CLR) für SQL Server im System.Data.SqlTypes Namespace und ihre nativen CLR-Äquivalente im Microsoft .NET Framework.

SQL Server-Datentyp

CLR-Datentyp (SQL Server)

CLR-Datentyp (.NET Framework)

varbinary

SqlBytes, SqlBinary

Byte[]

binär

SqlBytes, SqlBinary

Byte[]

varbinary(1), binary(1)

SqlBytes, SqlBinary

byte, Byte[]

Bild

Ninguno

Ninguno

varchar

Ninguno

Ninguno

char

Ninguno

Ninguno

nvarchar(1), nchar(1)

SqlChars, SqlString

Char, String, Char[]

nvarchar

SqlChars, SqlString

String, Char[]

nchar

SqlChars, SqlString

String, Char[]

Text

Ninguno

Ninguno

ntext

Ninguno

Ninguno

eindeutiger Bezeichner

SqlGuid

Leitfaden

Zeilenversion

Ninguno

Byte[]

bit

SqlBoolean

Boolesche

tinyint

SqlByte

Byte

smallint

SqlInt16

Int16

int

SqlInt32

Int32

bigint

SqlInt64

Int64

smallmoney

SqlMoney

Dezimal

Geld

SqlMoney

Dezimal

numerisch

SqlDecimal

Dezimal

dezimal

SqlDecimal

Dezimal

réel

SqlSingle

Einzeln

Schwimmer

SqlDouble

Doppelter

smalldatetime

SqlDateTime

日付時間

datetime

SqlDateTime

日付時間

sql_variant

Ninguno

Objekt

Benutzerdefinierter Typ (UDT)

Ninguno

benutzerdefinierter Typ

Tabelle

Ninguno

Ninguno

Cursor

Ninguno

Ninguno

Zeitstempel

Ninguno

Ninguno

xml

SqlXml

Ninguno

93voto

Must.Tek Punkte 1080

SQL Server und .Net Datentyp-Zuordnung

SQL Server and .Net Data Type mapping

17voto

AndreFeijo Punkte 9046

Für den Fall, dass jemand nach Methoden zur Konvertierung von/nach C#- und SQL Server-Formaten sucht, hier eine einfache Implementierung:

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: Tippfehler korrigiert

7voto

Salman Punkte 95

SQL Server und das .NET Framework basieren auf unterschiedlichen Typsystemen. Die Dezimalstruktur von .NET Framework hat beispielsweise eine maximale Skala von 28, während die dezimalen und numerischen Datentypen von SQL Server eine maximale Skala von 38 haben. Klicken Sie hier eine Verbindung ! zum Detail

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

6voto

Yitzhak Weinberg Punkte 1928
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,
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X