如何在c#中创建返回datatable的类

本文关键字:返回 datatable 的类 创建 | 更新日期: 2023-09-27 18:02:08

我创建了一个类,返回一个dataTable,但它显示一个错误

错误1 ' demo_c_sharp . cls_connection。GetApprovedData(ref string)':并非所有代码路径返回值D:'Vivek'demoproject'demo C Sharp'demo C Sharp'class files' cls_connection .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);
            }    

如何在c#中创建返回datatable的类

所有部件必须返回一个值。看到

您只返回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块,你正在显示一个消息,但然后什么也不做。您正在吞下异常,因此代码期望能够继续,但是您没有告诉它从方法返回什么,这是不允许的。

还有一个类似的问题,返回语句也在"if"块中。那么,当"if"的条件不满足时,代码去了哪里?没有,这意味着它也不知道返回什么。

我建议您将ddb1的声明和返回语句移到try块之外。或者,在catch块中返回一个空的DataTable对象,如果适合您的情况,甚至返回null,并且在if之后的额外else中也是如此。

你的返回路径在try块中,它可能在任何时候失败,而不是到达返回语句。

你需要确保你总是击中return语句,即使你捕获了一个异常。

您的问题不在于您命名的类,而在于方法。无论如何,这在这里不是一个大问题。

此外,作为一个错误提示,您必须始终返回一些东西(应该是nullDataTable的空实例)。

在这里它抱怨,因为在连接没有关闭的情况下,该方法根本不返回任何东西。这就是问题所在。

您的解决方案应该是这样的,您应该添加一个代码来处理if语句的其余情况。