Java 无法对非静态方法进行静态引用

Java 无法对非静态方法进行静态引用,java,sql,Java,Sql,这是我声明变量、get和set方法的地方。他们都在同一个班里 public class Users { private String username; public void setUsername(String username) { this.username = username; } public String getUsername() { return username; } public

这是我声明变量、get和set方法的地方。他们都在同一个班里

public class Users 
{
    private String username;

    public void setUsername(String username) 
    {
    this.username = username;
    }

    public String getUsername() 
    {
    return username;
    }

    public static ArrayList<Users> getAllContacts(String f) {

    Users Contact;
    ArrayList<Users> ContactList = new ArrayList<Users>();
    String query = "select * from UsersDB where username = ?";
    // connect to DB
    currentCon = DBController.getConnection1();

    try {
        pstmt = currentCon.prepareStatement(query);

您需要从实际的
Users
对象调用
getUsername()
方法。可能你的意思是说
Contact.getUsername()

向右看所有相关问题。我相信错误消息告诉了你需要知道的一切。当你键入问题标题时,会弹出几个问题;这是因为这里已经提出并回答了许多问题。您需要学习
静态
概念,以便完全理解您的问题所在。您在这里尝试使用的SQL语句不适合获取“所有用户”,而只适合获取特定用户。
  pstmt.setString(1, getUsername()); //  Cannot make a static reference to the non-static method 
        rs = pstmt.executeQuery();
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int mobile = rs.getInt("phone_Number");
            String gender = rs.getString("gender");
            String email = rs.getString("email");
            String birth = rs.getString("birthDate");

            Contact = new Users(name, email, gender, mobile, birth);
            ContactList.add(Contact);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ContactList;
}

}