Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 非静态字段、方法或属性(变量声明)需要对象引用_C#_Variables_Sqlconnection - Fatal编程技术网

C# 非静态字段、方法或属性(变量声明)需要对象引用

C# 非静态字段、方法或属性(变量声明)需要对象引用,c#,variables,sqlconnection,C#,Variables,Sqlconnection,我正在尝试向查询中添加一个参数,这样做会产生上述错误。我在外部或我的方法中声明了变量public。我试着把它变成静态的,就像我在其他帖子上读到的一样,但是它给了我错误,其他每一篇文章都引用了它。我使用的方法是公共静态列表方法 采取的步骤: 尝试在我的方法中声明一个变量,但没有将该变量传递给。 在线研究 测试在线研究 以下是我声明的变量: public int CarrierID { get; set; } 下面是我尝试添加参数的方法,它给出了CarrierID cmd.parameters.A

我正在尝试向查询中添加一个参数,这样做会产生上述错误。我在外部或我的方法中声明了变量public。我试着把它变成静态的,就像我在其他帖子上读到的一样,但是它给了我错误,其他每一篇文章都引用了它。我使用的方法是公共静态列表方法

采取的步骤: 尝试在我的方法中声明一个变量,但没有将该变量传递给。 在线研究 测试在线研究

以下是我声明的变量:

public int CarrierID { get; set; }
下面是我尝试添加参数的方法,它给出了CarrierID cmd.parameters.AddWithValue(“CarrierID”,CarrierID)处的错误:

empData类:

class EmpData
{
    public int EmployeeID { get; set; }
    public string FName { get; set; }
    public string LName { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
    public static int CarrierID { get; set; }
    public string CellNumber { get; set; }
    public bool IsActive { get; set; }
    public string CarrierName { get; set; }


    public static List<EmpData> getData()
    {

        List<EmpData> list = new List<EmpData>();

        StringBuilder sqlString = new StringBuilder();
        sqlString.Append("SELECT e.*, c.Carrier ");
        sqlString.Append("FROM Employee e, CellCarrier c ");
        sqlString.Append(" WHERE e.CarrierID = @CarrierID ");
        sqlString.Append("  AND e.CarrierID = c.CarrierID");

        SqlConnection dbConn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);

        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = sqlString.ToString();
        cmd.Parameters.AddWithValue("CarrierID", CarrierID);

        SqlDataReader reader = null;

        try
        {
            reader = DBHelper.executeQuery(dbConn, sqlString.ToString(), null);
            if (reader != null)
            {
                while (reader.Read())
                {
                    EmpData ed = new EmpData();
                    ed.EmployeeID = (int)reader["EmployeeID"];
                    ed.FName = reader["FirstName"].ToString();
                    ed.LName = reader["LastName"].ToString();
                    ed.UserName = reader["UserName"].ToString();
                    ed.Password = reader["Password"].ToString();
                    ed.Email = reader["Email"].ToString();
                    ed.CarrierID = (int)reader["CarrierID"];
                    ed.CellNumber = reader["CellNumber"].ToString();
                    ed.IsActive = (bool)reader["IsActive"];
                    ed.CarrierName = reader["Carrier"].ToString();
                    list.Add(ed);
                }
                reader.Close();
                reader.Dispose();
                dbConn.Close();
                dbConn.Dispose();
            }
            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 list;
    }
}
类数据
{
public int EmployeeID{get;set;}
公共字符串FName{get;set;}
公共字符串LName{get;set;}
公共字符串用户名{get;set;}
公共字符串密码{get;set;}
公共字符串电子邮件{get;set;}
公共静态int-CarrierID{get;set;}
公共字符串CellNumber{get;set;}
公共bool IsActive{get;set;}
公共字符串载体名称{get;set;}
公共静态列表getData()
{
列表=新列表();
StringBuilder sqlString=新的StringBuilder();
Append(“选择e.*,c.Carrier”);
Append(“来自员工e,手机运营商c”);
Append(“其中e.CarrierID=@CarrierID”);
Append(“和e.CarrierID=c.CarrierID”);
SqlConnection dbConn=新的SqlConnection(ConfigurationManager.ConnectionString[“Connection”].ConnectionString);
SqlCommand cmd=新的SqlCommand();
cmd.CommandText=sqlString.ToString();
cmd.Parameters.AddWithValue(“CarrierID”,CarrierID);
SqlDataReader=null;
尝试
{
reader=DBHelper.executeQuery(dbConn,sqlString.ToString(),null);
if(读卡器!=null)
{
while(reader.Read())
{
EmpData ed=新的EmpData();
ed.EmployeeID=(int)读卡器[“EmployeeID”];
ed.FName=reader[“FirstName”].ToString();
ed.LName=reader[“LastName”].ToString();
ed.UserName=reader[“UserName”].ToString();
ed.Password=reader[“Password”].ToString();
ed.Email=reader[“Email”].ToString();
ed.CarrierID=(int)读卡器[“CarrierID”];
ed.CellNumber=读卡器[“CellNumber”].ToString();
ed.IsActive=(bool)读卡器[“IsActive”];
ed.CarrierName=reader[“Carrier”].ToString();
列表。添加(ed);
}
reader.Close();
reader.Dispose();
dbConn.Close();
dbConn.Dispose();
}
其他的
抛出新异常(“未返回记录”);
}
捕获(例外情况除外)
{
掷骰子;
}
最后
{
if(dbConn!=null)
{
请尝试{dbConn.Close();dbConn.Dispose();}
捕获{}
}
if(读卡器!=null)
{
请尝试{reader.Close();reader.Dispose();}
捕获{}
}
}
退货清单;
}
}

您的方法是
静态的。。您的变量不是

您需要将变量标记为
static
,以便在
static
方法中使用:

public static int CarrierID { get; set; }
//     ^^^^^^ this
另一个选项是从该代码所在的方法中删除
static
修饰符,并在使用它之前实例化它所在的类

编辑:

编辑后。。我认为你应该改变你的方法:

public static List<EmpData> GetData(int carrierId) {
    // code here..

    cmd.Parameters.AddWithValue("CarrierID", carrierId);

    // code here..
}

我假设您已经有了所需的
CarrierID
可用和设置。。在调用此方法之前(以便可以传入)。我还大写了方法的第一个字符。。因为这更符合C风格。

您的方法是
静态的。。您的变量不是

您需要将变量标记为
static
,以便在
static
方法中使用:

public static int CarrierID { get; set; }
//     ^^^^^^ this
另一个选项是从该代码所在的方法中删除
static
修饰符,并在使用它之前实例化它所在的类

编辑:

编辑后。。我认为你应该改变你的方法:

public static List<EmpData> GetData(int carrierId) {
    // code here..

    cmd.Parameters.AddWithValue("CarrierID", carrierId);

    // code here..
}

我假设您已经有了所需的
CarrierID
可用和设置。。在调用此方法之前(以便可以传入)。我还大写了方法的第一个字符。。因为这更符合C风格。

您的方法是
静态的。。您的变量不是

您需要将变量标记为
static
,以便在
static
方法中使用:

public static int CarrierID { get; set; }
//     ^^^^^^ this
另一个选项是从该代码所在的方法中删除
static
修饰符,并在使用它之前实例化它所在的类

编辑:

编辑后。。我认为你应该改变你的方法:

public static List<EmpData> GetData(int carrierId) {
    // code here..

    cmd.Parameters.AddWithValue("CarrierID", carrierId);

    // code here..
}

我假设您已经有了所需的
CarrierID
可用和设置。。在调用此方法之前(以便可以传入)。我还大写了方法的第一个字符。。因为这更符合C风格。

您的方法是
静态的。。您的变量不是

您需要将变量标记为
static
,以便在
static
方法中使用:

public static int CarrierID { get; set; }
//     ^^^^^^ this
另一个选项是从该代码所在的方法中删除
static
修饰符,并在使用它之前实例化它所在的类

编辑:

编辑后。。我认为你应该改变你的方法:

public static List<EmpData> GetData(int carrierId) {
    // code here..

    cmd.Parameters.AddWithValue("CarrierID", carrierId);

    // code here..
}
我假设您已经有了所需的
CarrierID
可用和设置。