紀錄一下 SQL 對應 C# 的正確資料型態
C# | SQL |
long = int64 | bigint |
int = int32 = integer | int |
short = int16 | smallint |
byte | tinyint |
double | float |
decimal | money |
byte[] | timestamp |
Guid | UniqueIdentifier |
實際在操作上,很常看到 DB 資料型態是 int、smallint、tinyint 的在 C# 直接定義 int 來處理資料,不知道這是不是常態,目前想到的優缺點如下:
- 優點:如果 DB 欄位資料要異動(ex. tinyint → smallint),程式碼可以不用改
- 缺點:無法由型態判斷值的範圍,可能埋下隱形 Bug
ex. DB 資料型態為 tinyint; C# 資料型態 int,如果 value 超出 tinyint 範圍,要將值存進 DB 就會出現 Exception
參考資料:https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-data-type-mappings