返回SQL字符串而不传递任何变量的c#方法
本文关键字:变量 任何 方法 SQL 字符串 返回 | 更新日期: 2023-09-27 17:50:13
我试图创建一个方法,运行查询,然后读取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();
}
不要使用全局变量。返回方法的值。调用代码应该负责在它需要的任何地方放置这些值。我推荐阅读依赖性反转原理。
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();