返回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();
    }

返回SQL字符串而不传递任何变量的c#方法

不要使用全局变量。返回方法的值。调用代码应该负责在它需要的任何地方放置这些值。我推荐阅读依赖性反转原理。

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();