Когда я ввожу данные, превышающие длину столбца, это не вызовет исключения в ASP.NET

Вопрос прост .

У меня есть столбец в моей базе данных с типом данных 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, и на самом деле отобразилось сообщение, которое вы только что описали!

5
задан Carls Jr. 29 March 2011 в 02:11
поделиться