gpt4 book ai didi

Select 命令中的 SqlDateTime 溢出异常

转载 作者:行者123 更新时间:2023-12-05 01:26:39 25 4
gpt4 key购买 nike

我使用存储过程来获取分页列表,这是我的方法:

using(SqlConnection conn = new SqlConnection(_connectionString)) {
using(SqlCommand cmd = new SqlCommand("[GetPagedSP]", conn)) {
cmd.CommandType = System.Data.CommandType.StoredProcedure;

//Passing Parameters
**Update**
SqlParameter spCreationDate = new SqlParameter("@CreationDate_9", CreationDate);
spCreationDate.IsNullable = true;
cmd.Parameters.Add(spCreationDate);

// ........
//Finished Passing Parameters
conn.Open();

SqlDataReader dr = cmd.ExecuteReader();

while(dr.Read()) {
//Get Values
}
conn.Close();
}
}

这是我的存储过程命令:

CREATE TABLE #PagingTemp  (
[RowId] [bigint] IDENTITY(1,1) NOT NULL,
[RecordId] [bigint]
);

INSERT INTO [#PagingTemp] ([RecordId])
SELECT [CAR].[Id]
FROM [Article] AS [CAR] ;

SELECT [CAR].*
FROM [Collections].[Article] AS [CAR]
INNER JOIN [#PagingTemp] AS [PT] ON [CAR].[Id] = [PT].[RecordId]
WHERE [PT].[RowId] BETWEEN 1 AND 50;

当我在 SQL 中运行查询时,一切都很好,但在 .NET 中,我在这一行有一个异常:

SqlDataReader dr = cmd.ExecuteReader();

异常(exception)情况是:

System.Data.SqlTypes.SqlTypeException was unhandled by user code
Message=SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
Source=System.Data

更新

SQL中运行Query的例子: enter image description here

太奇怪了,我不明白发生了什么?

我没有任何大于 12/31/9999 或小于 1/1/1753datetime

我在数据库中只有一些具有空值的可空日期时间值。

你怎么看?问题出在哪里?

最佳答案

在将任何有效日期传递给变量 CreationDate 以执行存储过程之前,将其分配给变量 CreationDate

  //Passing Parameters 

CreationDate = DateTime.Now or any other date you want if you dont want to pass any date then assign DBNull.Value

**Update**
SqlParameter spCreationDate = new SqlParameter("@CreationDate_9", CreationDate);
spCreationDate.IsNullable = true;
cmd.Parameters.Add(spCreationDate);

希望这能解决您的问题。

关于Select 命令中的 SqlDateTime 溢出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11717209/

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