Ошибка подразумевает, что вы пытаетесь вставить значение, которое должно быть большим для длины столбца в базе данных. Просмотрите схему базы данных и укажите, какой столбец вызывает эту проблему.
Глядя на фрагмент кода У меня есть несколько других замечаний, которые, возможно, помогут.
Требуется ли в инструкции Update предложение where?
Выполняйте параметризованные запросы, так как это поможет избежать атак SQL-инъекций.
Использование инструкции очень полезно при очистке и очистке объектов, в этом случае инструкция using помогает управлять открытыми соединениями с базой данных.
Если вы хотите проверить допустимые длины строк перед отправкой их в базу данных, проверьте аргументы перед созданием соединений и т. Д., В идеале эти проверки будут выполняться на уровне вашей бизнес-логики.
if (activeEvaluate.Length > 5)
{
throw new ArgumentException("activeEvaluate");
}
using (SqlConnection connection = new SqlConnection(ConnString))
{
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = "UPDATE savedinfo set User_id= @UserId, Date = @Date, Evaluate = @Evaluate, TimeStart = @TimeStart, TimeEnd = @TimeEnd, Salary = @Salary ";
cmd.Parameters.AddWithValue("@UserId", Login.GetUserID());
cmd.Parameters.AddWithValue("@Date", DateTime.Now.ToLongDateString());
cmd.Parameters.AddWithValue("@Evaluate", activeEvaluate.ToString());
cmd.Parameters.AddWithValue("@TimeStart", dtCurrentTime1.ToLongTimeString());
cmd.Parameters.AddWithValue("@TimeEnd", dtCurrentTime2.ToLongTimeString());
cmd.Parameters.AddWithValue("@Salary", todaySalary.Text);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
}
Вы должны использовать параметризованный запрос. –
Что представляет собой командный текст для записи, которая терпит неудачу, и как это соотносится с табличной схемой? –
Как сказано в [предыдущем] [1], поле НЕ достаточно большое, чтобы хранить ваши данные. [1]: http://stackoverflow.com/questions/5591473/error-string-or-binary-data-would-be-truncated-when-trying-to-insert –