簡體   English   中英

如何檢測數據庫SQL LINQ C#中何時沒有值

[英]How to detect when there is no value from database SQL LINQ C#

我在檢測 C# 代碼中的值是否為空時遇到問題(我正在使用 LINQ 從 SQL SERVER 調用存儲過程),我的意思是當我想確定 SQL 是否在之后向我返回了某些內容時遇到了問題我調用了 SP,它期望有一個參數 (ArticleID) 或實際 SQL 沒有返回任何內容(空行不存在)。

事實上,我想檢查我的任何文章是否有一些“子文章”,並且我正在將 ArticleID 從 C# 代碼傳遞到存儲過程。

因此,如果文章在那里,我想用它做一些事情,如果通過的文章 ID 的文章不存在,我也想做一些事情,所以正如我所說,我需要檢測我的 sql 中是否存在給定文章 ID 的文章數據庫。

這是我的一些代碼:

private void btnCheckForArticle(object sender, RoutedEventArgs e)
{
        try
        {  
        if (gridArticles.SelectedItems.Count > 0) {
            Article a = (Article)gridArticles.SelectedItem;



                if (a.ArticleID != null)
                {

                    var existingArticle = DataServices.POS.proc_GetSubArticleByArticleID(a.ArticleID);
                    if (existingArticle != null)
                    {
                       //DO SOMETHING
                        return;
                    }
              }
        }
    }
}

我的存儲過程:

ALTER PROCEDURE [dbo].[proc_GetSubArticleByArticleID]
(
    @ArticleID int
)
AS
BEGIN
Select *
From SubArticles as S
Where S.ArticleID = @ArticleID
END

有趣的是,我不知道如何在 c# 代碼中檢測我的值是否為空,因為即使 sql 數據庫中沒有行,我仍然沒有得到空值,並且因為在existingArticle != null下方的代碼existingArticle != null會總是執行..

現在我將發布文章中發生的事情,該文章肯定沒有任何子文章,我的意思是,結果應該是 null 100%

在此處輸入圖片說明

我傳遞給過程的 ID 是 2351,所以我執行了應該直接在 sql 上返回值的 sp,我用 2351 替換了 @ArticleID,當然它沒有返回任何結果,但是我怎么能注意到在我的 C# 代碼中..

因為existingArticle永遠不會為空,因為它總是有一些值,並且低於我的if (existingArticle != null)將始終執行。 我真的不想要:/ ...

謝謝你們! 干杯

你為什么不調用 FirstOrDefault()

var existingArticle = DataServices.POS.proc_GetSubArticleByArticleID(a.ArticleID).FirstOrDefault();

if (existingArticle != null)
{
    // 
    return;
}

有一種特殊的數據類型用於檢查數據庫中的空值。

DBNull.Value

在你的情況下:

if (existingArticle != DBNull.Value)
{
   //DO SOMETHING
   return;
}

首先,將您的 SP 修改為在BEGIN之后:

SET NOCOUNT ON

這是為了避免干擾“xx 行受影響”消息。

第二,不要做SELECT * ,而是使用

SELECT 1 From SubArticles as S
Where S.ArticleID = @ArticleID

最后,檢查System.DBNull.Value而不是 NULL,因為這是將從 DDBB 返回的內容。 這是因為在 .Net 值類型中,布爾值不能為空

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM