我想要使用SqlDataReader(我很瞭解Linq等的美,但我正在構建的應用程序部分是一個SQL生成器,所以Linq不適合我的需要)。不幸的是,我不確定使用SqlDataReader時的最佳實踐。我在我的代碼中的幾個地方使用如下代碼:SqlDataReader是否具有與字符串鍵相同的Get *(int index)?
using (SqlDataReader reader = ...)
{
int ID = reader.GetInt32(0);
int tableID = reader.GetInt32(1);
string fieldName = reader[2] as string;
...//More, similar code
}
但是感覺非常不穩定。如果數據庫發生變化(在這種情況下實際上不太可能),代碼就會中斷。是否有一個等同於SqlDataReader的GetInt32,GetString,GetDecimal,需要一個列名而不是索引?在這種情況下什麼被認爲是最佳實踐?什麼是最快的?我的代碼的這些部分是我的代碼中最耗時的部分(我對它進行了幾次簡介),所以速度非常重要。
[編輯]
我知道使用索引用字符串的,我misworded以上。我正在運行緩慢的運行時間。我的代碼工作正常,但我正在尋找任何可以在這些循環中偷回幾秒鐘的方法。通過字符串訪問會減慢我的速度嗎?我知道db訪問是主要的時間密集型操作,對此我無能爲力,所以我想減少訪問每個元素的處理時間。
[編輯]
我決定只用GetOrdinal運行,除非某人有更具體的例子。我稍後會運行效率測試。我會盡量記住在我實際運行測試時發佈它們。
改爲使用int.Parse/TryParse。 – Femaref 2010-11-10 14:55:56
是的,我知道。我主要對速度感到好奇,如果這會讓我的代碼中最耗時的部分變得更慢。 – Crisfole 2010-11-10 15:01:01
@Femaref:爲什麼?我沒有意識到Convert.ToInt32和int.Parse之間有明顯的區別嗎? – batwad 2010-11-10 16:37:11