C#Datetime到ODBC日期时间转换错误

Din*_*ale 5 c# sql sql-server datetime odbc

我们正在尝试将ODBC与SQL Server 2012一起用于我们的新应用程序,因为MS正逐步淘汰OleDb,我们希望尝试将其移植到其他数据库变得容易(更容易?).

问题是,当我尝试使用ODBC数据访问类时,我在尝试保存日期时遇到以下错误:

错误[22008] [Microsoft] [SQL Server Native Client 11.0]日期时间字段溢出.小数秒精度超出参数绑定中指定的小数.

好吧,我得到那种.C#具有比ODBC参数想要使用的更高级别的精度.我知道ODBC实现不喜欢几分之一秒,但是保留日期时间精度的工作是什么?

谢谢,

Dinsdale

编辑:好的,这是原始参数构造函数:

String Name = "created";
DateTime DateTimeValue = DateTime.Now;
OdbcCommand cmd = new OdbcCommand();
cmd.CommandType = request.CommandType;
cmd.CommandText = request.Command;
OdbcParameter param;
param = new OdbcParameter(Name, OdbcType.DateTime);
param.Value = DateTimeValue;
cmd.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

此代码生成以下错误:错误[22008] [Microsoft] [SQL Server Native Client 11.0]日期时间字段溢出.小数秒精度超出参数绑定中指定的小数.

修复是使用扩展构造函数,如下所示:

param = new OdbcParameter(Name, OdbcType.DateTime, 23, System.Data.ParameterDirection.Input, false, 0, 3, Name, DataRowVersion.Current, DateTimeValue);
Run Code Online (Sandbox Code Playgroud)

再次感谢Kumod!Dinsdale

小智 0

我想出了如何解决我遇到的问题。本来想早点发帖的,但是没机会。我最终使用了 SQLDataAdapter 并解决了所有问题。由于某种原因,ODBCDataAdapter 不喜欢做我想做的事情。不管怎样,希望这最终能帮助别人