保存到数据库时,输入字符串的格式错误不正确

问题描述:

在SQL Server中,我有一个名为AppZip的db列,其类型为int。我有一个5位数的邮政编码的文本框。当我尝试保存时出现错误“输入字符串格式不正确”。我很困惑。我将“12345”的字符串表示形式转换为int类型,它如何是数据库的错误格式?这是我的代码。保存到数据库时,输入字符串的格式错误不正确

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

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

编辑:这是因为我没有停止填充从后执行回页面加载领域的方法。

异常正由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

引发FormatException的唯一方法是将一些不可转换的字符拼接到原始字符串。

确保你没有输入任何错误字符,然后再试一次,那是唯一合理的解释,我可以看到现在

检查所有列的映射在你的表定义。它可能是抛出错误的表中的其他列之一。运行SQL Profiler来检查生成的SQL。