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