如何 return 来自方法的字符串?

How to return a string from a method?

问题

为什么我不能通过我的方法 SQLSelection() return 我的变量 SQL

我已声明它,然后重新分配它,然后 return编辑它。然而,这不起作用,并且伴随着多条错误消息,没有任何内容是 returned?

代码

private void SQLSelection()
{

    String SQL = null;

    if (comboBox1.Text == "All" & comboBox2.Text == "All")
    {
        String SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status in ('New','Hold')";
    }
    else if (comboBox1.Text == "All" & comboBox2.Text == "@status")
    {
        String SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status = @status";
    }
    else if (comboBox1.Text == "@username" & comboBox2.Text == "All")
    {
         String SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status = @username";
    }
    else
    {
        String SQL = "SELECT stationID, LocationName, plandate, username, status  FROM dbo.joblist WHERE username = @username and status = @status";
    }

    return String SQL;

}

您的 return 类型是空的,不是字符串。将其更改为:

private string SQLSelection()

void 是对某物执行的 "returnless" 操作,不 "return" 支持 return 语句的值。如果您尝试 return 一个值,您会遇到编译器错误。

此外,您不断重新声明

String SQL

在每个方法中。通过删除每个 if 语句中的 String 声明,只需将值分配给 SQL 即可。

最后,您的 return 语句再次尝试重新声明变量。

您得到的方法应该如下所示:

private string SQLSelection()
{
    String SQL = null;

    if (comboBox1.Text == "All" & comboBox2.Text == "All")
    {
        SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status in ('New','Hold')";
    }
    else if (comboBox1.Text == "All" & comboBox2.Text == "@status")
    {
        SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status = @status";
    }
    else if (comboBox1.Text == "@username" & comboBox2.Text == "All")
    {
         SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status = @username";
    }
    else
    {
        SQL = "SELECT stationID, LocationName, plandate, username, status  FROM dbo.joblist WHERE username = @username and status = @status";
    }

    return SQL;
}

你的方法签名说返回 void,这意味着方法 returns 什么都没有。将其更改为:

private string SqlSelection()

SqlSelection 还有一些问题,我什至怀疑它能否编译。试试像

private string SqlSelection()
{
   string sql = null;

   if (comboBox1.Text == "All" & comboBox2.Text == "All")
   {
     sql = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status in ('New','Hold')";
   }
   else if (comboBox1.Text == "All" & comboBox2.Text == "@status")    }

   ...

   return sql;
}

您的代码至少包含以下错误:

  1. 你的方法的 return 类型被声明为 void (意味着它没有任何 return 值),所以你不能 return任何东西。将 return 类型更改为 string:

    private string SQLSelection()
    
  2. 您正试图在分配给它的地方和 return 语句中重新声明 SQL 变量。例如,而不是:

            String SQL = "…";
    

    应该是:

            SQL = "…";
    

    而不是:

        return String SQL;
    

    应该是:

        return SQL;
    

    (String SQL; 是声明类型 string 的变量 SQL 的语法。您在方法的开头就声明了变量;您不需要稍后重新声明。)

1) 您的 return 类型应该是 String 而不是 void。 私有字符串 SQLSelection() {
2) 不要在 if 语句中重新声明变量: SQL = "SELECT ..";
3)您不需要 return 语句中的字符串: return SQL;

你也可以像这样

在 return 之前检查你的变量
private string SQLSelection()
{
private String SQL = null;

if (comboBox1.Text == "All" & comboBox2.Text == "All")
{
    SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status in ('New','Hold')";
}
else if (comboBox1.Text == "All" & comboBox2.Text == "@status")
{
    SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status = @status";
}
else if (comboBox1.Text == "@username" & comboBox2.Text == "All")
{
     SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE status = @username";
}
else
{
    SQL = "SELECT stationID, LocationName, plandate, username, status  FROM dbo.joblist WHERE username = @username and status = @status";
}
if(SQL != null)
    return SQL;
else 
   return "any phrase you want ";

}