gpt4 book ai didi

c# - 使用 DateTime 的 Dapper 查询

转载 作者:行者123 更新时间:2023-11-30 22:56:20 27 4
gpt4 key购买 nike

<分区>

我正在尝试使用 Dapper 从我的 ODBC 驱动程序中查询一个表。我尝试运行的特定查询需要返回 DateTime 值大于传递给查询的参数的行。

这是我试过的:

string delta = "05/02/2019 08:41:37";
DateTime deltaDt = DateTime.Parse(delta);

using (IDbConnection connection = new OdbcConnection(/**Connection string**/))
{
connection.Open();

try
{
string query = "SELECT * FROM MyTable WHERE Date > @Delta";
IEnumerable<object> records = connection.Query<object>(query, new { Delta = deltaDt });

Console.WriteLine(records.Count());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

但是,使用上面的方法我得到以下错误:

{"ERROR [22018] Cannot convert non-numeric data"}

然后我尝试使用不带 DapperIDBConnection 来查看我是否只是做了一些不正确的事情,但是如果我只是执行以下操作,查询工作正常:

string delta = "05/02/2019 08:41:37";
DateTime deltaDt = DateTime.Parse(delta);

using (IDbConnection connection = new OdbcConnection(/**Connection string**/))
{
connection.Open();

string odbcQuery = "SELECT * FROM MyTable WHERE Date > ?";

IDbCommand command = connection.CreateCommand();

IDbDataParameter parameter = command.CreateParameter();
parameter.Value = deltaDt;
command.Parameters.Add(parameter);

command.CommandText = odbcQuery;
System.Data.IDataReader reader = command.ExecuteReader();
while (reader.Read())
{
object[] values = new object[1];
reader.GetValues(values);
console.log(values);
}
}

使用 Dapper 查询绑定(bind) DateTime 时我做错了什么吗?据我所知,无论我使用 Dapper 查询还是 IDbDataParameter,该值都是相同的。我也尝试了以下方法,但仍然遇到同样的问题:

string query = "SELECT * FROM MyTable WHERE Date > @Delta";
DynamicParameters dp = new DynamicParameters();
dp.Add("@Delta", deltaDt, DbType.DateTime);
IEnumerable<object> records = connection.Query<object>(query, dp);

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com