我正在尝试创建一个运行查询的方法,然后读取它返回的 2 值,然后将它们放在全局变量中,以便我可以在另一个页面中访问它们。我的问题是我应该使用什么方法,因为我有两个要设置的变量。通常我会传递我将使用的变量,但在这种情况下,我不是。这个主要看起来很简单,但我无法想到获得这些价值的方法。我不知道怎么看这个问题来研究它。我已经将代码包含在我迄今为止所尝试的内容中。谢谢你的帮助。
public string getTotals3()
{
WorkerData workerData = new WorkerData();
StringBuilder sqlString = new StringBuilder();
sqlString.Append("SELECT DISTINCT DataWin8Data, DataWin7Data ");
sqlString.Append("FROM Data ");
sqlString.Append("WHERE Number = 4");
SqlDataReader reader = null;
SqlConnection dbConn = App_Code.DBHelper.getConnection();
try
{
reader = App_Code.DBHelper.executeQuery(dbConn, sqlString.ToString(), null);
if (reader != null)
{
while (reader.Read())
{
workerData.TotalCases4 = reader["DataWin8Data"] != DBNull.Value ? reader["DataWin8Data"].ToString() : string.Empty;
workerData.TotalPercentage4 = reader["DataWin7Data"] != DBNull.Value ? reader["DataWin7Data"].ToString() : string.Empty;
}
}
else
throw new Exception("No records returned");
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (dbConn != null)
{
try { dbConn.Close(); dbConn.Dispose(); }
catch { }
}
if (reader != null)
{
try { reader.Close(); reader.Dispose(); }
catch { }
}
}
return workerData.ToString();
}
答案 0 :(得分:1)
不要使用全局变量。返回方法中的值。调用代码应该负责将这些值放在任何需要的地方。我建议阅读Dependency Inversion Principle。
public WorkerData GetWorkerData()
{
...
using (SqlDataReader reader = ...)
{
if (reader.Read())
{
return new WorkerData
{
TotalCases4 = reader["DataWin8Data"] != DBNull.Value ? reader["DataWin8Data"].ToString() : string.Empty,
TotalCases3 = workerData.TotalPercentage4 = reader["DataWin7Data"] != DBNull.Value ? reader["DataWin7Data"].ToString() : string.Empty;
}
}
}
throw new ApplicationException("Could not retrieve worker data.");
}
从您的通话类中,只需使用返回值执行任何操作:
WorkerData workerData = someClass.GetWorkerData();