ストアドプロシージャを使用してページリストを取得します。これが私の方法です。
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();
例外は次のとおりです。
System.Data.SqlTypes.SqlTypeExceptionは、ユーザーコード
Message=SqlDateTimeオーバーフローによって処理されませんでした。1/1/175312:00:00AMから12/31/999911:59:59PMの間にある必要があります。
Source = System.Data
アップデート
SQLでクエリを実行する例:
それはとても奇妙で、何が起こったのか分かりませんか?
datetime
大きい12/31/9999
または小さい値はありません1/1/1753
データベースにnull値を持つNullable日時値がいくつかあります。
どう思いますか?問題はどこだ?