gpt4 book ai didi

c# - 位置 0 查询中没有行

转载 作者:行者123 更新时间:2023-11-30 20:47:37 25 4
gpt4 key购买 nike

我是 C# 和 .NET 的新手,我正在努力处理一些抛出错误的代码,它抛出的错误是:

There is no row at position 0.

这是我得到的代码,据我所知,如果 sql 返回 0 行,应该显示 404,但是目前我遇到堆栈错误。

这是堆栈错误:

[IndexOutOfRangeException: There is no row at position 0.]
System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex) +2409382
System.Data.DataRowCollection.get_Item(Int32 index) +20
Targetting.ArticlePage.Page_Load(Object sender, EventArgs e) in C:\SRC\Site1\Web\Article\Trunk\Article.aspx.cs:78
CommonBasePageClass.BaseWebPage.OnLoad(EventArgs e) +50
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178

这是我认为会引发错误的代码:

//If the article is Archived or Unknown or has expired then all users should be shown an "unavailable" message instead of the content
if (dt.Rows[0]["pagestatusid"].ToString() == "3" || dt.Rows[0]["pagestatusid"].ToString() == "0" || (dt.Rows[0]["expirydate"] != DBNull.Value && DateTime.Parse(dt.Rows[0]["expirydate"].ToString()) < DateTime.Now))
{
pnlDraftWarning.Visible = false;
pnlContentNotAvailable.Visible = true;
pnlMainContent.Visible = false;

Response.StatusCode = 404;
return;
}

最佳答案

错误是第 0 行没有数据 - 表 dt 是空的。

代码预计至少有一行

if (dt.Rows[0]["pagestatusid"].ToString() == "3" || dt.Rows[0]["pagestatusid"].ToString() == "0" || (dt.Rows[0]["expirydate"] != DBNull.Value && DateTime.Parse(dt.Rows[0]["expirydate"].ToString()) < DateTime.Now))
{
}

您可以通过添加保护条件来检查是否有数据来解决此问题。

if (dt == null ||
dt.Rows.Count < 1 ||
dt.Rows[0]["pagestatusid"].ToString() == "3" ||
dt.Rows[0]["pagestatusid"].ToString() == "0" ||
(dt.Rows[0]["expirydate"] != DBNull.Value &&
DateTime.Parse(dt.Rows[0]["expirydate"].ToString()) < DateTime.Now))
{
// other code
}

或者确定为什么在您期望有一些数据时可能没有数据的原因。

关于c# - 位置 0 查询中没有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663307/

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