Передача значения DateTime в качестве параметра в OleDbCommand
У меня проблема с передачей значения DateTime в запрос в виде DbParameter. Кажется, временная часть значения DateTime удаляется.
Вот пример кода на C#:
DbProviderFactory _factory = OleDbFactory.Instance;
DbCommand cmd = _factory.CreateCommand();
cmd.CommandText = "INSERT INTO SomeTable (SomeDateField) VALUES (?)";
DbParameter p = _factory.CreateParameter();
p.ParameterName = ""; // Not necessary
p.Value = DateTime.Now; // assume Time != 00:00:00
p.DbType = DbType.Date; // DateTime and DateTime2 don't work
cmd.Parameters.Add(p);
Моя проблема в том, что параметр Date, похоже, не достигает Access с его временной частью, а у SomeDateField всегда есть 00:00:00.
Я не хочу делать что-то вроде:
cmd.CommandText = "INSERT INTO SomeTable (SomeDateField) VALUES (#" + aDateTimeString + "#)";
3 ответа
Когда вы будете использовать OleDbType.DateTime
вместо DbType.Date
Я уверен, что это будет работать.
Но, как я понял из вашего поста, вы не хотите быть таким конкретным и использовать более общий перечисление DbType (и классы)?
Тем не менее, я думаю, что вы должны использовать более конкретные классы OleDb в вашем уровне доступа к данным. Использование менее определенных классов 'DbType' бесполезно, потому что, когда вы нацеливаетесь на другой тип базы данных, велики шансы, что ваш SQL-синтаксис также должен будет измениться, поскольку каждая СУБД использует свой собственный диалект (иногда только незначительные изменения, но все же...).
Убедитесь, что ваш тип данных для SomeDateField
является DateTime
и не Date
, Также попробуйте сделать
p.DbType = DbType.DateTime;
OleDbType не имеет перечисления DateTime http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbtype.aspx
Если вы используете DBType.DateTime, "Тип параметра зависит от поставщика данных.NET Framework. Указание типа преобразует значение параметра в тип поставщика данных перед передачей значения в источник данных. Если тип является не указан, ADO.NET выводит тип данных для параметра "Параметр" из свойства "Значение" объекта "Параметр". " http://msdn.microsoft.com/en-us/library/system.data.dbtype.aspx