从一段时间内返回一个变量

时间:2013-03-21 21:53:25

标签: c# sql ms-access

我想从这个方法中返回一个变量。 是的我确实把它变成了静态字符串。并尝试返回Messagebox.Show所在的变量。我甚至将它等于一个变量,并试图将其返回。但我似乎无法从括号内返回。我无法将括号外的变量返回。该怎么办?代码使用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();
    }

1 个答案:

答案 0 :(得分:3)

只需在try块外部创建String变量,并在从数据库中读取值时进行设置。同时将方法的返回类型更改为string而不是void。您可以使用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;
    }

因此,如果返回的值为空,则字符串数据库为空或存在错误。