我使用SqlDataReader對象從SQL服務器獲取數據2012數據庫中的int字段:SqlDataReader對象返回的空白而不是空的
SqlConnection connection = (SqlConnection)_db.Database.GetDbConnection();
await connection.OpenAsync();
SqlCommand command = new SqlCommand("dbo.[sp_MyStoredPrc] @InputId=1", connection);
var reader = await command.ExecuteReaderAsync();
if (reader.HasRows)
{
while (reader.Read())
{
int? var1 = (int?)reader["Column1Name"];
}
}
當從數據庫中讀取一個NULL int
場, reader["Column1Name"]
是空白,因此代碼在運行時拋出InvalidCastException。
我已經試過
reader.GetInt32(reader.GetOrdinal("Column1Name"))
但這拋出System.Data.SqlTypes.SqlNullValueException。
我也曾嘗試
reader.GetSqlInt32(reader.GetOrdinal("Column1Name"))
返回null,但類型是SqlInt32
,而不是像int?
我想。
我落得這樣做
if (!reader.IsDBNull(reader.GetOrdinal("Column1Name")))
int? var1 = (int?)reader["Column1Name"];
其中工程。
問題:
是不是還有比調用
IsDBNull
方法更簡單的方法?爲什麼
reader["Column1Name"]
返回空白而不是null
如果db值爲NULL且字段爲int
?
我不確定,但嘗試使用Convert.ToInt32(reader [「Column1Name」]); – SergeyAn
我得到一個異常,因爲Reader [「Column1Name」]爲空 – devc2
您確定db值爲空嗎?它可以是空的,但並不意味着它是空的。否則,沒有簡單的方法來處理它,而是檢查空值。 – SergeyAn