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

时间:2011-02-07 01:15:25

标签: c# asp.net linq-to-sql

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

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

(我正在使用linq to sql ...)

编辑:这是因为我没有停止填充页面加载字段的方法在回发后执行。

3 个答案:

答案 0 :(得分:2)

Convert.ToInt32()引发了异常。在将Text属性传递给Trim()之前,请检查Text属性的格式是否正确以及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
}


更多信息

答案 1 :(得分:0)

检查表定义中所有列的映射。它可能是表中抛出错误的其他列之一。运行SQL事件探查器以检查生成的SQL。

答案 2 :(得分:-1)

提出FormatException的唯一方法是将一些不可转换的字符与原始字符串相连。

确保你没有错误地输入任何字符并再试一次,这是我现在能看到的唯一合理解释