在while条件下返回一个变量

本文关键字:一个 变量 while 条件下 返回 | 更新日期: 2023-09-27 18:05:17

我想从这个方法中返回一个变量。是的,我确实使它成为静态字符串。并尝试返回一个变量,其中Messagebox。显示。我甚至让它等于一个变量,并试图返回它。但我似乎无法从while括号内返回。我不能让括号外的变量返回。该怎么办?代码使用MessageBox工作,但我需要字符串变量。

static void rsnREAD(string dbTbl)
    {
        OleDbConnection machStopDB = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:'Users'sgarner'Google Drive'Visual Studio 2012'Write_to_db'Write_to_db'Machine_Stop.accdb");
        //string sDate;
        //sDate = DateTime.Now.ToString("MM/dd/yyy HH:mm:ss");
        string str = "SELECT LAST(REASON) AS lastREASON FROM "+dbTbl+"";
        OleDbCommand rdCmd = new OleDbCommand(str, machStopDB);
        try
        {
            machStopDB.Open();
            OleDbDataReader reader = rdCmd.ExecuteReader();
            while (reader.Read())
            {
                MessageBox.Show(reader[0].ToString());
            }
            reader.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            machStopDB.Close();
        }
        machStopDB.Close();
    }

在while条件下返回一个变量

只需在try块之外创建String变量,并在从数据库读取值时设置它。同时将方法的返回类型从void改为string。您可以使用if而不是while,因为您只从数据库读取一个值。

static string rsnREAD(string dbTbl)
    {
      string result = string.Empty;
      using(var machStopDB = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:'Users'sgarner'Google Drive'Visual Studio 2012'Write_to_db'Write_to_db'Machine_Stop.accdb");
      {
        string str = "SELECT LAST(REASON) AS lastREASON FROM "+dbTbl+"";
        OleDbCommand rdCmd = new OleDbCommand(str, machStopDB);
        try
        {
          machStopDB.Open();
          using(var reader = rdCmd.ExecuteReader())
          {
            if(reader.Read())
            {
                result = reader[0].ToString();
            }
          }
        }
        catch (Exception ex) // Sample only. Catch only ones you need.
        {
            MessageBox.Show(ex.Message);
        }
      }
      return result;
    }

因此,如果返回值为空字符串,要么数据库为空,要么出现错误。