- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
下面的方法调用失败并显示消息“将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。”:
public IEnumerable<SomeResult> GetResults(SqlConnection connection, string attribute)
{
var sql = string.Format(@"
SELECT TOP 2000
r.Id
,r.LastName
,r.FirstName
,r.Ssn
,r.CurrentId
,BeginDate = case when isdate(rli.BeginDate) = 1 then convert(datetime, rli.BeginDate) else NULL end
,EndDate = case when isdate(rli.EndDate) = 1 then convert(datetime, rli.EndDate) else NULL end
,rli.LcknTyCd
,rli.ProvId
FROM
[dbo].[Span] rli
INNER JOIN [dbo].Recipient r
ON rli.SysId = r.SysId
INNER JOIN [dbo].ValidRecipient lc
ON r.SysId = lc.SysId
WHERE
BeginDate <= GETDATE()
AND EndDate >= GETDATE()
AND rli.LcknTyCd = @LcknTyCd);
return connection.Query<SomeResult>(sql, new { LcknTyCd = attribute}).ToList();
}
public struct SomeResult
{
public string Id{ get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string Ssn { get; set; }
public string CurrentId{ get; set; }
public DateTime? BeginDate { get; set; }
public DateTime? EndDate { get; set; }
public string LcknTyCd{ get; set; }
public string ProvId{ get; set; }
}
如果结果集包含 1000 条(或更少)记录,则代码可以正常工作。当我在 SQL Server Management Studio(2014 版)中执行查询时,我也没有收到错误。即使我从选择中删除 TOP 并在 SSMS 中执行它,也不会发生错误(如预期的那样返回 12,000 多条记录)。
我应该做什么而不是上面的实现来成功检索超过 1000 行的结果集?在这种情况下,存储过程会更合适吗?
最佳答案
听起来您的日期字段存储在 varchar 列中。理想情况下,您应该将它们更改为日期时间字段。如果这不是一个选项,请将您的 WHERE
子句更改为如下所示:
WHERE
case when isdate(rli.BeginDate) = 1 then convert(datetime, rli.BeginDate) else NULL end <= GETDATE()
AND case when isdate(rli.EndDate) = 1 then convert(datetime, rli.EndDate) else NULL end >= GETDATE()
AND rli.LcknTyCd = @LcknTyCd);
它在您的前 1000 条查询中成功的原因可能是因为找到的前 1000 条记录都包含有效日期。
关于c# - 查询结果超过1000条时Dapper抛出System.Data.SqlClient.SqlException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29243394/
我不断收到标题中提到的错误,但我似乎无法通过这个错误。 这是我的代码: strSig = sigPlusNET1.GetKeyReceiptAscii() sigPlusNET
在 .Net Core 2.0 中使用 System.Data.SqlClient.dll 时出现版本冲突错误。它看起来像是 Core dll 和 NetStandard dll 之间的冲突。不知道为
在我的代码中使用 Microsoft.Data.SqlClient 程序包(2.0 版)时,通过 VSTest.console.exe 执行单元测试时出现以下错误我们的 CI 供应商(在本地运行时):
错误的屏幕截图我收到指向ItemsService中下面的‘GetAllItems()’方法的SQLException。“无效的列名OrderID1”。我有两个实体,Order和Item,我希望与每个I
错误的屏幕截图我收到指向ItemsService中下面的‘GetAllItems()’方法的SQLException。“无效的列名OrderID1”。我有两个实体,Order和Item,我希望与每个I
Screenshot of errorI am getting an SQLException pointing at the 'GetAllItems()' method below in t
我最近将我的一个 ASP.NET Core 应用程序从 net461 应用程序升级到 ASP.NET Core 2.0 应用程序,因为过去唯一阻碍我的是 System.Transactions(现在受
我对我的 ASP.NET Core 2.0 项目中的所有 .NET Standard 2.0 类库使用 System.Data.SqlClient 版本 4.4.3。为什么我得到 Could not
运行查询时出现以下错误。 * System.Data.SqlClient.SqlException: 超时已过。 在操作完成之前超时期限已过,或者服务器没有响应。在 System.Data.SqlCl
我正在编写一些 python 来与我有权访问的 MSSQL 服务器进行交互。我目前遇到的问题是我的交易语句之一没有超过默认设置的超时期限(30 秒)。 我已尝试将连接字符串中的命令超时更改为值 0,这
在更改服务器并尝试为某些数据库密集型任务增加工作线程数后,我注意到我的应用程序出现性能问题。 经过一些测试,我发现问题出在从 dataReader 读取数据。在 30 个线程上执行简单查询比在单线程上
我有以下代码: open FSharp.Data [] let connectionString = @"Data Source=(local)\SQLExpress;Integrated Secur
我在 ubuntu 中使用单声道,我需要一个 Web 服务来访问 SQL 数据库,但是当我使用 Mono 时: using System.Data.SqlClient; 选项 SqlClient 不存
我已经处理这个问题一段时间了。我有一个简单的 PowerShell 函数,它接受一个到 SQL Server 的开放连接和一个包含 SQL 命令的字符串,并针对服务器运行它。该函数应返回一个整数值,表
假设我有一个将一些数据插入表中的存储过程。如果数据重复,则会导致 sql server 错误(因为我在某些列上有唯一索引)并且此错误会导致 SqlClient 中出现异常。我可以在存储过程中做什么来处
我主要是想找出使用 SqlClient 命名空间在 C#.NET 中执行基本插入操作的最简单方法。 我正在为我的数据库链接使用 SqlConnection,我已经成功执行了一些读取操作,我想知道插
我正在尝试使用 Microsoft.Data.SqlClient,但无法使连接正常工作。但是,当我使用 System.Data.SqlClient 时,一切正常。 try { using (v
我有一个名为 Site.Dal 的项目,它使用 netstandard2.0 进行编译。 csproj 是: netcoreapp2.2;netcoreapp3.1;netstanda
如何在 Azure 上启用和查看 SqlClient 跟踪?我有一个托管在 Azure 上的 Web 应用程序,它使用 SqlClient。我知道我们可以使用 XPerf/PerfView 来收集和查
我们有一个 WCF 服务托管在 IIS 中,在服务器上运行。该服务连接到另一台服务器上运行的 SQL Server 实例。在我们的代码中,我们为每个请求打开和关闭连接。 WCF 服务每分钟向数据库发出
我是一名优秀的程序员,十分优秀!