2008-10-08 22 views
5

Beim Zugriff auf ein Objekt in einer DataTable, das aus einer Datenbank abgerufen wurde, gibt es Gründe, das Objekt nicht in den gewünschten Typ zu konvertieren, oder gibt es Gründe, Convert zu verwenden? Ich weiß, dass die Regel umgesetzt wird, wenn wir wissen, mit welchem ​​Datentyp wir arbeiten, und konvertieren, wenn der Datentyp geändert werden soll. Vorausgesetzt, wir wissen, welcher Datentyp in einer Spalte gespeichert ist, scheint die Umwandlung angemessen zu sein. Gibt es jedoch Probleme mit DB-Typen, die bedeuten, dass wir uns nicht darauf verlassen können?Umsetzen oder konvertieren beim Abrufen von Daten aus einer Datenbank?

Antwort

4

Ich würde immer werfen, aus den Gründen, die Sie angeben. Die gotchas Ich bin mir dessen bewusst, dass Sie brauchen zu handhaben sind:

  1. Sie müssen sich offensichtlich in der Lage sein DBNulls zu behandeln (zB durch mit Convert.IsDBNull Prüfung)

  2. Im Fall von ExecuteScalar I glaube, Sie müssen auf Null sowie DBNull überprüfen.

  3. SQL-Server @@ IDENTITY- und SCOPE_IDENTITY-Funktionen geben numerische Werte (dezimal) auch für Spalten zurück, die als INT deklariert sind. In diesem Fall können Sie zweimal "(int) (Dezimal) Wert" umwandeln oder im T-SQL-Code behandeln, z. B .: .

    INSERT INTO MyTable ... AutoIdColumn SELECT FROM MyTable WHERE AutoIdColumn = SCOPE_IDENTITY()

oder

INSERT INTO MyTable ... 
SELECT CAST(SCOPE_IDENTITY() AS INT) 
0

Sowohl CASTCONVERT und verwendet werden, um explizit einen Ausdruck umzuwandeln Datentyp zu einem anderen. Mit CONVERT können Sie jedoch auch das Format Format angeben.

Syntax für CAST:

CAST (expression AS data_type [ (length) ]) 

Syntax für CONVERT:

CONVERT (data_type [ (length) ] , expression [ , style ]) 
0

Wenn aus RDBMS retreiving sollten Sie die Datenbanktreiber Griff Rangierung zwischen nativen und angeforderten Typs lassen.

CAST ist von SQL-Standards genehmigt und funktioniert auf der höchsten Anzahl von RDBMS-Plattformen.

CONVERT ist auf weniger Plattformen verfügbar.

Wenn Sie über mehrere Plattformen verfügen, sollte CONVERT nur für spezielle Fälle verwendet werden, z. B. benutzerdefinierte Formatierungen, die mit CAST nicht durchgeführt werden können.

Verwandte Themen