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
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:
Sie müssen sich offensichtlich in der Lage sein DBNulls zu behandeln (zB durch mit Convert.IsDBNull Prüfung)
Im Fall von ExecuteScalar I glaube, Sie müssen auf Null sowie DBNull überprüfen.
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)
Sowohl CAST
CONVERT
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 ])
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.
- 1. Abrufen von Daten aus einer relationalen Datenbank
- 2. Umsetzen von Daten aus einer Laufzeitspeicher zu einem Fall Klasse
- 3. Fehler beim Abrufen von Daten aus der Datenbank, Datenbankanbietercode 9421
- 4. Fehler beim Abrufen von IdentityUser-Daten aus der Azure-Datenbank
- 5. PHP Abrufen von Daten aus Datenbank
- 6. Abrufen von Informationen aus einer Oracle-Datenbank
- 7. Abfrage Abrufen von Daten aus der Datenbank
- 8. CakePHP-Datumsformat beim Abrufen aus der Datenbank
- 9. Daten aus SQLite-Datenbank abrufen?
- 10. Abrufen von Daten aus der Datenbank
- 11. Abrufen von Daten aus Firebase-Datenbank
- 12. node.js und hapi: synchrones Abrufen von Daten aus einer Datenbank
- 13. Fehler beim Abrufen von Daten aus MongoDB
- 14. Abrufen von Informationen aus einer Datenbank
- 15. Daten aus einer Datenbank aus zwei verschiedenen Tabellen abrufen
- 16. Abrufen von Daten aus einer vorbereiteten Anweisung
- 17. API zum Abrufen/Senden von Daten von/zu einer Datenbank
- 18. Probleme beim Abrufen von Daten aus OnRowCommand von einem GridViews
- 19. Abrufen von Daten aus einer Oracle-Datenbank als CSV-Datei (oder jedes andere benutzerdefinierte Textformat)
- 20. Abrufen neuer Daten nur aus Datenbank
- 21. Richtiger Code zum Abrufen von Daten aus SQL Server-Datenbank
- 22. nicht Daten aus der Datenbank abrufen
- 23. Alle Tabellen aus einer Oracle-Datenbank abrufen
- 24. Fehler beim Abrufen von MSSQL Datenbank-View Daten CakePHP 3
- 25. Django Daten von Datenbank zu Vorlage abrufen
- 26. Abrufen von Daten aus PeopleSoft
- 27. Abrufen von Daten aus einer mySQL-Abfrage
- 28. Daten aus der Datenbank abrufen - php codeigniter
- 29. Weitere Daten aus einer SQL Server-Datenbank abrufen
- 30. Abrufen einer Daten aus mongodb