Передача значения 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

Другие вопросы по тегам