2010-12-15 2 views
7

Ich habe Probleme beim Umwandeln von smallint in t-sql in Integer in C#.Wie konvertiert man Smallint von T-Sql zu Integer in C#?

Bitte kann mir jemand mit einem Umweg helfen?

Update # 1

Was ich wirklich zu tun versuchen, ist, Daten von einem als Smallint in SQL Server 2005 von einem Datareader in meine Anwendung markierten Spalte abzurufen. Es tut mir leid, ich war vorher nicht wirklich klar genug.

+1

Welche Probleme haben Sie? Kannst du ein Beispiel geben? –

+0

Angesichts der Tatsache, dass es verschiedene Ansätze zum Abrufen von Daten aus SQL Server gibt, geben Sie uns sehr wenig weiter. – spender

Antwort

9

Nicht ganz sicher, welche Probleme Sie haben, da der Zahlenbereich in smallint eine Teilmenge des Bereichs der ganzzahligen Werte ist.

sollte der Standard-convert in C# arbeiten:

int intFromSmallInt = Convert.ToInt16(smallint); 

Ist der Fehler von einem ORM kommt?

+0

Ich habe versucht, es von einem SqlDataReader-Objekt abzurufen. Das habe ich schließlich getan. dr.GetInt16 (dr.GetOrdinal ("ColumnName")). Danke trotzdem. – Tebo

8

Es gibt auch den C# Datatype "kurz", die System.Int16 ist (auch bekannt als "Smallint" in SQL Server).

Ich bevorzuge es, "kurz" zu verwenden, nur weil ich denke, es sieht kühler aus und aus keinem anderen Grund.

Auch würde ich nutzen Ihre Daten folgendes ziehen (wenn es NULL-Werte zulässt):

short? sVal = dr["ColName"] is System.DBNull ? null : (short?)(dr["ColName"]); 
+0

_ "Ich bevorzuge es," kurz "zu verwenden, nur weil ich denke, dass es cooler aussieht" _ ein gültiger Grund ist: weil es der richtige Typ ist, wenn Sie 'smallint' wählen. Wenn Sie "int" verwenden würden, würden Sie zulassen, dass Nummern, die zu groß sind, in die Datenbank eingefügt werden. –

+1

Ich bevorzuge den "kurzen" Datentyp über die Struktur "System.Int16". Int16 ist eine Struktur, die kurz Aliase enthält. Sie können beide verwenden. Ich meinte nicht, ich bevorzuge kurz über int - das wäre natürlich falsch. – MikeTeeVee

-4
int? value = (int?)(row["ColumnName"] as short?); 
+0

Nur minus? Kann erklären warum? – isxaker

+0

weil die Antwort falsch ist. –

Verwandte Themen