-1

このメソッドから変数を返したいと思います。はい、静的文字列にしました。そして、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();
    }
4

1 に答える 1

3

try ブロックの外側に変数を作成し、Stringデータベースから値を読み取るときに設定するだけです。また、メソッドの戻り値の型をstringではなく に変更しvoidます。データベースから値を 1 つだけ読み取っているため、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;
    }

したがって、戻り値が空の文字列の場合は、データベースが空であるか、エラーが発生しています。

于 2013-03-21T21:56:31.307 に答える