Вопрос прост .
У меня есть столбец в моей базе данных с типом данных NVARCHAR (20) .. поэтому, когда я пытаюсь ввести данные в этот столбец, который, например, содержит 22 символа, он просто игнорирует последние 2 символа вместо того, чтобы генерировать исключение. !
Это нормально? .. и как защитить базу данных от такой проблемы?
PS: Конечно, я использую средства проверки и проверку сервера, но как мне защитить базу данных, есть ли? это своего рода расширенное ограничение, большее, чем просто указание длины столбца, поэтому оно генерирует исключение и не принимает введенную дату ??
Edit
try
{
using (SqlConnection conn = new SqlConnection(ConnStr))
{
string Command = "SET NOCOUNT ON; INSERT INTO [Countries] (CountryName, IsVisible) VALUES (@Name, @IsVisible);";
using (SqlCommand comm = new SqlCommand(Command, conn))
{
comm.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 20);
comm.Parameters["@Name"].Value = Name;
comm.Parameters.Add("@IsVisible", System.Data.SqlDbType.Bit);
comm.Parameters["@IsVisible"].Value = IsVisible;
conn.Open();
comm.ExecuteNonQuery();
return "Successfully added " + Name + " to the countries.";
}
}
}
catch (SqlException SqlEx)
{
string ErrorMessage = "";
for (int i = 0; i < SqlEx.Errors.Count; i++)
{
ErrorMessage += SqlEx.Errors[i].Number + " : " + SqlEx.Errors[i].Message + "\n";
}
return ErrorMessage;
}
Ну, это код, который я использую, и, кстати, я просто попытался вставить данные большего размера, чем длина столбца, непосредственно из Sql Management Studio, и на самом деле отобразилось сообщение, которое вы только что описали!