Во время сохранения в базу данных входная строка была в неправильном формате - PullRequest
1 голос
/ 07 февраля 2011

В SQL Server у меня есть столбец БД с именем AppZip с типом int. У меня есть текстовое поле с 5-значным почтовым индексом. Когда я пытаюсь сохранить, я получаю сообщение об ошибке «Входная строка была в неправильном формате». Я не совсем понимаю. Я преобразовываю строковое представление «12345» в тип int, каков неправильный формат для базы данных? Вот мой код.

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

(я использую linq to sql ...)

РЕДАКТИРОВАТЬ: Это потому, что я не остановил выполнение метода, который заполняет поле при загрузке страницы, при отправке назад.

Ответы [ 3 ]

2 голосов
/ 07 февраля 2011

Исключение выдается 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 голосов
/ 07 февраля 2011

Проверьте сопоставления всех столбцов в определении таблицы. Это может быть один из других столбцов в таблице, выдающий ошибку. Запустите SQL Profiler, чтобы проверить генерируемый SQL.

0 голосов
/ 07 февраля 2011

Единственный способ вызвать исключение FormatException - объединить необратимые символы с исходной строкой.

Убедитесь, что вы ничего не набрали char по ошибке и попробуйте снова, это единственное разумное объяснение, которое я вижу сейчас

...