簡體   English   中英

如何創建在C#中返回數據表的類?

[英]how to create class that return datatable in c#?

我創建了一個返回dataTable的類,但顯示錯誤

錯誤1'demo_C_Sharp.Cls_onnection.GetApprovedData(ref字符串)':並非所有代碼路徑都返回值D:\\ Vivek \\ demoproject \\ demo C Sharp \\ demo C Sharp \\ class files \\ Cls_onnection.cs 45 26 demo C Sharp

我創建了以下方法:

 public  DataTable  GetApprovedData(ref string tablename)  
      {
             try 
             {          
             if (cnn.State==System.Data.ConnectionState.Closed)
                {
                    dtTbl = new DataTable();
                    cnn.Open();
                    cmd = new  SqlCommand("USP_Billing_GetApprovedData", cnn);
                    cmd.CommandTimeout = 5000;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@ProcessName", tablename);

                    da = new SqlDataAdapter(cmd);
                    da.Fill(dtTbl);
                    return dtTbl;
                }
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.Message);
            }    

所有零件都必須返回值。請參見此處

您只返回if部分,如果if部分不起作用怎么辦? 因此,您還需要一個額外的變量,該變量可能在方法的結尾。

public  DataTable  GetApprovedData(ref string tablename)  
{
   dtTbl = new DataTable();

   try 
   {            
       if (cnn.State==System.Data.ConnectionState.Closed)
       {
           cnn.Open();
           cmd = new  SqlCommand("USP_Billing_GetApprovedData", cnn);
           cmd.CommandTimeout = 5000;
           cmd.CommandType = CommandType.StoredProcedure;
           cmd.Parameters.AddWithValue("@ProcessName", tablename);

           da = new SqlDataAdapter(cmd);
           da.Fill(dtTbl);

        }
    }
    catch (Exception ex)
    {
       MessageBox.Show(ex.Message);
    }   
    finally
    {
       cnn.Close();
    }

    return dtTbl;
}

您必須從方法中返回某些內容,否則將引發異常。 當前,在您的catch塊中,您正在顯示一條消息,但隨后什么也不做。 您正在吞下該異常,因此該代碼希望能夠繼續執行,但是您沒有告訴它從該方法返回什么,這是不允許的。

還有一個類似的問題,就是return語句也在“ if”塊內。 因此,當不滿足“ if”的條件時,代碼會去哪兒? 無處,這意味着它也不知道該返回什么。

我建議您將dtb1的聲明和返回語句移到try塊之外。 作為選擇,內catch塊返回一個空的DataTable對象,或者如果這是適合您的情況甚至是空的,同樣一個額外else你以后if

您的返回路徑在try塊中,該塊可能隨時失敗,並且無法到達return語句。

您需要確保始終遇到一個return語句,即使遇到異常也是如此。

您的問題不在命名帖子的類中,而在方法中。 無論如何,這不是一個大問題。

此外,作為錯誤提示,您必須始終返回某些內容(應該為nullDataTable空實例)。

它在這里抱怨,因為如果未關閉連接,則該方法根本不會返回任何內容。 這就是問題所在。

您的解決方案應為您添加代碼以處理if語句的其余情況。

暫無
暫無

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

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