2011-02-07 1 views
1

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

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

(я использую LINQ к SQL ...)

EDIT: Это было потому, что я не прекращал метод, который заполнит поле на странице загрузки от выполнения на пост обратно.

ответ

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

Благодарим за подробный ответ. –

-1

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

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

0

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

Смежные вопросы