【问题标题】:not all code paths return a value error on web method并非所有代码路径都在 Web 方法上返回值错误
【发布时间】:2015-08-27 11:01:53
【问题描述】:

我有一个 web 方法函数检查数据库中是否存在名称,但我收到错误:

错误 114“lookups_Creditor.CheckIfNameExists(string)”:并非所有代码 路径返回一个值

这是网络方法:

[WebMethod]
    public static bool CheckIfNameExists(string Name)//error on this line
    {
        try
        {
           Creditor.CheckIfNameCreditorExists(Company.Current.CompanyID, Name);

        }
        catch (Exception ex)
        {

        }
    }

这里是sql的搜索功能:

public static string CheckIfNameCreditorExists(int CompanyID, string Name)
    {
        DataSet ds = new DataSet();
        string accNo = "";
        string sql = "proc_CheckIfACCreditorExists";

        string query = "SELECT c.* " +
            " FROM Creditor c " +
            " WHERE c.Company_ID = " + CompanyID + " AND c.Name LIKE '" + Name + "' ";


        DataTable dt = new DataTable();
        using (MySql.Data.MySqlClient.MySqlDataAdapter adapter = new MySql.Data.MySqlClient.MySqlDataAdapter(query, DataUtils.ConnectionStrings["TAT"]))
        {
            adapter.SelectCommand.CommandType = CommandType.Text;
            adapter.SelectCommand.CommandText = query;
            adapter.Fill(dt);
            if (dt.Rows.Count > 0)
            {
               accNo = Convert.ToString(dt.Rows[0]["AccoutCode"]);
            }

        }
        return accNo;
    }

我正在尝试创建一种在数据库中搜索名称的方法。如果名称存在,则返回与该名称关联的帐户代码。我将在屏幕上显示一条消息,告诉用户该名称已存在于帐户 ABC 中。

【问题讨论】:

  • 嗯,它的返回类型是 bool,而且你不会在任何地方返回 bool……你期望什么?

标签: c# mysql asp.net webmethod


【解决方案1】:
[WebMethod]
public static bool CheckIfNameExists(string Name)//error on this line
{
    bool Result = false;
    try
    {
       Result = Creditor.CheckIfNameCreditorExists(Company.Current.CompanyID, Name) != "";

    }
    catch (Exception ex)
    {

    }

    return Result
}

【讨论】:

  • 如果这样做我也会有一个 Result = false;在捕获中
  • 不需要,因为已初始化为 false。只有在没有异常发生且 Check ""
  • @GuidoG - bool 无论如何都初始化为 false。
【解决方案2】:

您已将返回类型写为 Bool,但您没有返回任何内容。

如果您没有要返回的内容,那么只需将该返回类型设置为 Void。

通过方法名称,它表明您应该返回“True”或“False”。

该错误只是表明,当您的方法中的返回类型不是 void 时,您应该返回一些东西。

【讨论】:

  • 从方法名称来看,OP 确实想要返回一些东西......所以 void 部分可能是无关紧要的
  • 是的,从名字上看是对的,它清楚地表明你应该返回真或假,只需在方法中添加一个返回类型。
【解决方案3】:

你的方法应该返回 bool,但你什么都没有返回。 你需要像这样重写它:

[WebMethod]
public static bool CheckIfNameExists(string Name)
{
    bool res = false;
    try
    {
       // Check your string result if it's null or empty
       // and store the result in local variable
       res = !string.IsNullOrEmpty(Creditor.CheckIfNameCreditorExists(Company.Current.CompanyID, Name));
    }
    catch (Exception ex)
    {
        // Do your handling here
    }

    return res;
}

【讨论】:

  • 这是更正确的形式...除了它需要否定。 String.IsNullOrEmpty 如果顾名思义为 null 或空,则返回 true
猜你喜欢
  • 2013-07-01
  • 2014-04-16
  • 2015-02-07
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多