爲SqlDataReader的鑄造數據我這些(例如,共同的數據類型):傳遞SqlDataReader的作爲參數的函數用於鑄造
string name = reader["name"].ToString(); //for string
int i = 0; i = int.TryParse(reader["i"].ToString(), out i); //for int
int i = reader.GetInt32(reader.GetOrdinal("i")); //or this again for int
bool b = reader.GetBoolean(reader.GetOrdinal("b")); // for boolean
我想創建與這些函數的類:
public static class gd{
public static bool Bool(SqlDataReader rd, string name)
{
return rd.GetBoolean(rd.GetOrdinal(name));
}
public static int Int(SqlDataReader rd, string name)
{
int i=0;
i = int.TryParse(reader["i"].ToString(), out i);
return i;
}
}
,然後只用:
int i=c.Int(reader,"i");
bool b=c.Bool(reader,"b");
DateTime dt = c.Date(reader,"dt");
我想知道的是它傳遞的DataReader作爲參數是一個好主意?任何人都有更好的理念來鑄造數據讀取器數據?
好吧,我曾想過寫一個擴展方法,但不知道這是一個好主意。非常感謝 –
@AshkanMobayenKhiabani擴展方法是一種簡單的靜態方法。這只是編譯器誰做的魔術和將擴展方法調用轉換爲'Extensions.GetInt32(reader,「i」)' –
你已經使用完全相同的方法名稱sqldatareader已經有了,這不是一個問題嗎? –