我們知道,在SQL SERVER中有Bit, Float, Int , Char等等一系列的數據類型,而在DOT NET中,有Boolean,Double,Int 32,String等數據類型與之對應。 也就是說,數據庫中的數據類型與DOT NET的數據類型之間,有一個映射關係。下表是他們的映射關係:
dot net中的數據類型 Sql server 中的數據類型
Boolean Bit
Byte TinyInt
byte[] VarBinary
DataTime DateTime
Decimal Decimal
Double Float(注意SQLSERVER中沒有Double類型)
Float Real
Guid Guid
Int16 SmallInt
Int32 Int
Int64 BigInt
Object Variant
String NVarChar
String VarChar
String Char
String Money
String WChar
String Text
Byte TinyInt
byte[] VarBinary
DataTime DateTime
Decimal Decimal
Double Float(注意SQLSERVER中沒有Double類型)
Float Real
Guid Guid
Int16 SmallInt
Int32 Int
Int64 BigInt
Object Variant
String NVarChar
String VarChar
String Char
String Money
String WChar
String Text
DBNull Null
注意:
1.如果我們要分別獲得表A的第一列的“數據庫類型”或“該列對應的dotNet數據類型”,我們可以分別用SqlDataReader.GetDataTypeName() {返回“數據庫類型”}或 SqlReader.GetFieldType(){返回“對應的dotNet數據類型”}來獲取。
2.Null在數據庫中被看做是一個很特別的值,並不是指沒有值。因此,任何數據庫訪問技術(如ADO.NET)時,都要對數據庫中爲NULL的字段做特別的處理。在ADO.NET中,把數據庫中爲NULL的字段看成爲DBNull類型,即:數據庫中的NULL類型對應dot Net中的DBNull類型。
當我們使用DataReader對象的GetValue()或GetValues()【UnTyped-Accessor類型,見決戰.net數據庫開發聖典P21】來取得數據庫中爲NULL的字段時,DOTNET會把數據庫中的特殊值NULL轉換成DBNull對象。
但是,當我們使用聖典GetChar等這類Typed-Accessor來獲取數據庫中爲NULL類型的字段時,將會報錯。所以,我們在使用Typed-Accessor類型訪問函數訪問數據庫時,最好通過DataReader.IsDBNull方法來判斷下。