2012-11-05 222 views
0

試圖弄清楚如何將此zip字符串轉換爲int。我得到一個轉換異常:將字符串轉換爲int - datareader

member.Zip = reader.GetInt16(ordinals[(int)Enums.MemberColumn.Zip]); 

UPDATE:

感謝所有。以下是我想出了爲我的作品不夠好:

Int32.TryParse(reader.GetString(ordinals[(int)Enums.MemberColumn.Zip]), out number) ? number : 0; 
+0

什麼樣的對象是讀者(datareader?)? Int.Parse?顯式強制轉換(int)(在讀者對象ofc上)? –

+0

剛纔reader.GetString和int.Parse怎麼樣?雖然如果數據庫說它是一個字符串,我會試圖把它作爲一個字符串整個 –

+0

你試過調試嗎?你的序數列舉什麼樣的價值? 'Enums.MemberColumn.Zip'的值的索引值是多少? – Bridge

回答

1

你需要把它作爲一個字符串,然後解析該字符串:

string zipString = reader.GetString(ordinals[(int)Enums.MemberColumn.Zip]); 
member.Zip = Int16.Parse(zipString); 

的DataReader期望的基礎類型的該字段與您所調用的具體方法相同。所以GetInt16需要一個基本的16位整數,GetBoolean需要一個基礎位,而GetString需要一個基礎字符串。它不會爲你做任何轉換。

+0

謝謝。那麼我會不想tryparse而不是解析? – PositiveGuy

+0

是的,你可能會。取決於您是否希望程序在讀取器中發現無效數據時拋出異常。 – rossipedia

0
member.Zip = Convert.ToInt16(reader.GetString(ordinals[(int)Enums.MemberColumn.Zip]));