2011-02-07 64 views
1

在SQL Server中,我有一個名爲AppZip的db列,其類型爲int。我有一個5位數的郵政編碼的文本框。當我嘗試保存時出現錯誤「輸入字符串格式不正確」。我很困惑。我將「12345」的字符串表示形式轉換爲int類型,它如何是數據庫的錯誤格式?這是我的代碼。保存到數據庫時,輸入字符串的格式錯誤不正確

q.AppZip =Convert.ToInt32(txtAppZip.Text); 

(我使用LINQ to SQL的...)

編輯:這是因爲我沒有停止填充從後執行回頁面加載領域的方法。

回答

1

異常正由Convert.ToInt32()拋出。檢查Text屬性的格式是否正確,然後將該屬性的Trim()傳遞給Convert.ToInt32()

string appZipText = txtAppZip.Text.Trim(); 
if (!string.IsNullOrEmpty(appZipText)) 
{ 
    q.AppZip = Convert.ToInt32(appZipText); 
} 

此外,您還可以使用 Int32.TryParse()在轉換之前檢查字符串的有效性。

int appZip; 
string appZipText = txtAppZip.Text.Trim(); 

if(!string.IsNullOrEmpty(appZipText) && 
    Int32.TryParse(appZipText.Trim(),NumberStyles.Integer,CultureInfo.CurrentCulture, out appZip)) 
{ 
    // Valid format 
    // Use or assign converted value 
    q.AppZip = appZip; 
} 
else 
{ 
    // Cannot convert to Int32 
} 


更多信息

+0

感謝您的詳細回覆。 – 2011-02-07 19:53:15

-1

引發FormatException的唯一方法是將一些不可轉換的字符拼接到原始字符串。

確保你沒有輸入任何錯誤字符,然後再試一次,那是唯一合理的解釋,我可以看到現在

0

檢查所有列的映射在你的表定義。它可能是拋出錯誤的表中的其他列之一。運行SQL Profiler來檢查生成的SQL。