Вопрос прост.
В моей базе данных есть столбец с типом данных NVARCHAR (20) .. поэтому, когда я пытаюсь ввести в этот столбец данные, которые, например, содержат 22 символа, он просто игнорирует последние 2 символа, а не выдает исключение!
Это нормально? .. а как обезопасить базу данных от такой проблемы?
PS: Конечно, я использую элементы управления проверкой и проверкой сервера, но как защитить базу данных, есть ли какое-то расширенное ограничение, не просто указывающее длину столбца, поэтому оно выдает исключение и не принимает введенную дату ??
Редактировать
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, и он фактически отобразил сообщение, которое вы только что описали!