Frage

Ich habe eine Web-Seite, die ich bis zu einem Verfahren gespeichert rel="nofollow. In dieser SQL-Datenquelle, habe ich einen Parameter, die ich zurück auf die gespeicherte Prozedur vom Typ int bin vorbei.

ASP.NET scheint auf Standard zu wollen int32 , aber die Zahl nicht höher kommen als 6. Ist es in Ordnung, den ASP.NET-Standard außer Kraft zu setzen und setzte in 16 oder wird es einen Konflikt irgendwo auf der Straße?

Beschreibung:. Das Datenbankfeld hat eine Länge von 4 und Genauigkeit von 10, ob das einen Unterschied in der Antwort macht

War es hilfreich?

Lösung

Wenn Sie es zwingen, zum Beispiel zu sein, ein Byte und die Anzahl ist über 255 Sie das Risiko eines Gussfehler führen (und eine Ausnahme ausgelöst wird). Allerdings, wenn Sie wissen, dass es nicht höher sein würde als 6 sollte es kein Problem sein.

Wenn es nach mir, würde ich es nur als normaler int verwenden, bin ich nicht sicher, dass Sie viel sparen, wenn etwas anderes als ein paar Bytes durch ein Byte zu machen. Das Risiko der Ausnahme ausgelöst wird, ist zu hoch, und Sie würden alle Vorteile verlieren, indem sie kleiner zu machen.

Andere Tipps

mit int32 Stick. Das ist, was vb der "Integer" und SQL des INT ist, sowieso.

Sie werden keine deutliche Leistungssteigerung gewinnen, indem ein Tinyint / Byte oder eine kurze / int16 anstelle von int / int32 verwendet wird.

In der Tat, die Kopfschmerzen Sie in von allen Casting verursacht in der Zukunft führen könnten Sie vielleicht für Objekte zu tun haben, die int32s erwarten werden Sie verrückt.

Wenn Sie die DB Feld sagen eine Länge von 4 hat, bedeutet, dass 4 Bytes, was eine Int32 (4 Bytes = 32 Bits) entspricht. Aus diesem Grund Ihre Spalte als int32 zurückgegeben wird.

Es gibt verschiedene integer Datentypen in SQL Server - wenn Sie sind sicher, dass die Zahl als 6 nicht höher bekommen, sollten Sie die Spalte in der Datenbank als „tinyint“, erklären die ein einzelnes Byte verwendet und Werte von 0 bis 255. Dann wird die SQL-Datenquelle sie konvertieren halten kann, sollte zu ein „Byte“ Datentyp, die für Ihre Zwecke in Ordnung sein wird.

CLR "Byte" == SQL "tinyint" (1 Byte) CLR "Kurz" (oder INT16) == SQL "Smallint" (2 Bytes) CLR "int32" == SQL "int"

EDIT: nur weil man etwas tun kann, bedeutet nicht, sollten Sie - ich mit Michael Haren zustimmen , die Entwicklung Kopfschmerzen diese weniger häufig Datentypen schwerer wiegt als die kleine Leistungssteigerung der Verwaltung Sie erhalten würden, wenn Sie mit einem sehr leistungsfähiger Software handeln (in diesem Fall, warum sollten Sie ASP.NET verwenden?)

Sie Speicher nicht viel nichts, wenn durch einen Int16 auf der ASP-Seite verwenden. Es hat immer noch in ein schließlich Register 32-Bit zu laden.

FYI, int die CLR Karten Int32 intern sowieso.

Verwenden Sie, was Ihre SQL Server gespeicherte Prozedur definiert. Wenn es ein int in SQL Server ist, verwendet Int32 dann in .NET. smallint in SQL ist int16.

Ansonsten SQL Server wird es nur automatisch upconvert, oder einen Fehler aus, wenn es abwärts gewandelt werden muss.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top