在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();
}
只需在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;
}
因此,如果返回值为空字符串,要么数据库为空,要么出现错误。