Я использую SQL Server 2012 и VS 2012. У меня есть таблица с следующими данными:UPDATE Переполнение DateTime запроса
TagID SessionID ScanningTime
int nvarchar datetime
---------------------------------------
4820427 Test1 2013-08-16 14:20:17.447
я создал запрос UPDATE, чтобы сохранить любые изменения, которые были сделаны (любые записи добавлены или существующие записи отредактированы) в DGV обратно в SQL DB.
Так, например, я буду добавлять новые записи и редактировать существующий, чтобы выглядеть следующим образом:
TagID SessionID ScanningTime
int nvarchar datetime
---------------------------------------
4820000 Test1 2013-08-16 14:20:17.447
3242341 Test1 2013-08-16 14:20:17.447
и нажмите на кнопку, чтобы обновить базу данных:
private void UpdateBtn_Click(object sender, EventArgs e)
{
DataTable queryResult = new DataTable();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
int tagID = Convert.ToInt32(row.Cells["TagID"].Value);
string sessionID = Convert.ToString(row.Cells["SessionID"].Value);
DateTime ScanningTime = Convert.ToDateTime(row.Cells["ScanningTime"].Value);
string ConnStr = "Data Source=DUZY;Initial Catalog=AutoRegSQL;Integrated Security=True";
SqlConnection MyConn = new SqlConnection(ConnStr);
MyConn.Open();
//SQL query that returns todays sessions for the given roomID
string query = @"UPDATE Attendance" +
" SET TagID= @tagNo, SessionID= @sessionNo, ScanningTime= @scantime ";
SqlCommand command = new SqlCommand(query, MyConn);
command.Parameters.Add("tagNo", SqlDbType.Int).Value = tagID;
command.Parameters.Add("sessionNo", SqlDbType.VarChar).Value = sessionID;
command.Parameters.Add("scantime", SqlDbType.DateTime).Value = ScanningTime;
SqlDataAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(queryResult);
MyConn.Close();
}
}
Когда я нажимаю кнопка для сохранения изменений я получаю ошибку:
An unhandled exception of type 'System.Data.SqlTypes.SqlTypeException' occurred in System.Data.dll
Additional information: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
EDIT:
Оглядываясь назад на мой SSMS, содержимое таблицы посещаемости изменилось после попытки обновления таблицы. Первоначальная запись была заменена записью, которая была добавлена вручную (несмотря на ошибку).
посещаемость таблицы после выполнения запроса UPDATE:
TagID SessionID ScanningTime
int nvarchar datetime
---------------------------------------
5453453 Test1 2013-08-16 14:20:00.000
Вы уверены, что это ваш код? В запросе отсутствует предложение where, поэтому он обновляет все записи в вашей таблице, запрос представляет собой запрос UPDATE, поэтому он не возвращает ничего, кроме количества затронутых строк. Наконец, заливка внутри цикла не имеет смысла – Steve
Я не знаю, где в мире вы, а просто здравомыслящий, убедитесь, что ваши культуры верны. В Великобритании мы получаем это много, когда пытаемся вставить день в колонку месяца в американской культуре! – Liath
вам нужно проверить, что такое 'DataType' в поле« ScanningTime ». ваша проблема кажется очевидной проблемой «Format DateTime». также я бы изменил параметр «Parameters.Add» на «Parameters.AddWithValue», чтобы сервер определил DataType. – MethodMan