[英]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語句,即使遇到異常也是如此。
您的問題不在命名帖子的類中,而在方法中。 無論如何,這不是一個大問題。
此外,作為錯誤提示,您必須始終返回某些內容(應該為null
或DataTable
空實例)。
它在這里抱怨,因為如果未關閉連接,則該方法根本不會返回任何內容。 這就是問題所在。
您的解決方案應為您添加代碼以處理if
語句的其余情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.