2015-02-18 4 views
0

При попытке Нажмите кнопку сохранения отображается следующее сообщение об ошибкеСтрока или двоичные данные будут усечены из SQL запроса

Ошибка

Строка или двоичные данные будут усечены.

Код:

var connectionString = new ConnectionString(); 

var conn = new SqlConnection(connectionString.ViMS_LOCAL()); 
string query = "INSERT INTO [Visitor.Profile] 
    (Name,NRIC,Address,StartVisit,Gender,VisitorType,PassNumber,PlateNumber,StatusId, Reason) VALUES ` 
    (@Name,@NRIC,@Address,@StartVisit,@Gender,@VisitorType,@PassNumber,@PlateNumber,@StatusId, @Reason)";` 

SqlCommand cmd = new SqlCommand(query, conn); 
cmd.Parameters.AddWithValue("@Name", VisitorName.Text); 
cmd.Parameters.AddWithValue("@NRIC", NRIC.Text); 
cmd.Parameters.AddWithValue("@Address", Address.Text); 
cmd.Parameters.AddWithValue("@StartVisit", sd1.Text); 

//Radiobutton 
if (Male.IsChecked == true) { 
    cmd.Parameters.AddWithValue("@Gender", Male.Content); 
} 
if (Female.IsChecked == true) { 
    cmd.Parameters.AddWithValue("@Gender", Female.Content); 
}  
if (Ped.IsChecked == true) { 
    cmd.Parameters.AddWithValue("@VisitorType", Ped.Content); 
} 
if (Veh.IsChecked == true) { 
    cmd.Parameters.AddWithValue("@VisitorType", Veh.Content); 
} 

cmd.Parameters.AddWithValue("@PassNumber", PassNumber.Text); 
cmd.Parameters.AddWithValue("@PlateNumber", PlateNumber.Text); 

if (RadEnab1.IsChecked == true) { 
    cmd.Parameters.AddWithValue("@StatusId", RadEnab1.Content); 
} 
if (RadDis1.IsChecked == true) { 
    cmd.Parameters.AddWithValue("@StatusId", RadDis1.Content); 
} 

` //Combobox function`  
if (Reason.Text == "Meeting") { 
    cmd.Parameters.AddWithValue("@Reason", Reason.Text); 
} 
if (Reason.Text == "Delivery") { 
    cmd.Parameters.AddWithValue("@Reason", Reason.Text); 
} 
if (Reason.Text == "Pickup") { 
    cmd.Parameters.AddWithValue("@Reason", Reason.Text); 
} 


try { 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 

} catch (Exception err) { 

} finally { 
    conn.Close(); 
} 
vSuccess.Content = "* Visitor Register Success!"; 
//} 
} 

Я пытаюсь отлаживать его, все это хорошо, но когда идти к "улову (Exception ERR)" это ошибка отображения

Как решить эту проблему ?

+0

Проверьте, не превышает ли размер параметра хранимую процедуру размер передаваемых данных? – Adil

ответ

1

Сравните длины текста, который вы передаете команде, и размер столбца в базе данных.

Если длина передаваемого текста больше указанного размера поля в базе данных, эта ошибка возникает.

Пример: В моей Таблица-

FieldName Размер

Имя NVARCHAR (10)

Если Вы передаете имя с длиной более 10 возникает эта ошибка.

Надеюсь, это поможет. Я новичок в C#, и недавно получил это исключение.

+0

Это работает, я никогда не понимаю, что мой StatusId является nvarchar (2) в базе данных –

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