Я использую команду SqlBulkCopy
для ввода данных в таблицу sql. У меня есть первый столбец, который равен CreatedDate
, я установил значение по умолчанию или привязку к getdate()
без кавычек. Тем не менее, представляется, что, когда bulkCopy.WriteToServer(table);
вызывается брошено следующее сообщение об ошибке:Автоматическое добавление SQL-данных с использованием SqlBulkCopy с C#
Приведенное значение типа String, из источника данных не может быть преобразовано в тип DateTime указанного целевого столбца.
Внутренняя Исключение составляет
Не удалось преобразовать значение параметра из строки в DateTime.
Я установил значение по умолчанию или привязку для столбцов CreatedDate
до getdate()
. Это автоматически вставляет текущую дату и время в столбец, когда выполняется команда SqlBulkCopy
?
Нужно ли добавить столбец CreatedDate
в DataTable
? Если у меня есть столбцы, которые автоматически вставлены, мне нужно их сопоставить или добавить? Если да, как бы вы добавляли или сопоставляли столбец типа данных SQL datetime
?
var conn = new SqlConnection(connectionString);
var sessionId = Guid.NewGuid();
var table = new DataTable(); // create the datatable
table.Columns.Add("location", typeof (string));
table.Columns.Add("product_name", typeof (string));
table.Columns.Add("product_id", typeof (string));
table.Columns.Add("product_price", typeof (string));
table.Columns.Add("session_id", typeof (string));
foreach (var pair in idsAndPrices) // then loop all dictionary entries and add the rows
{
table.Rows.Add(location, productName, pair.Key, pair.Value, sessionId);
}
using (var bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = "dbo.ProductInventory";
conn.Open();
bulkCopy.WriteToServer(table); // write to database
conn.Close();
}
Вы можете добавить столбец datetime в свой стол. Стандартный формат даты и времени SQL: YYYY-MM-DD HH: MM: SS. Таким образом, вы можете получить текущее время datetime в .net, используя 'DateTime.now'. Затем вы можете проанализировать это datetime с помощью string.format, например, так: 'string.Format (" {0: yyyy-MM-dd HH: mm: ss} ", DateTime.now)' Это форматированное datetime может быть введено в БД. – Elias