Java 无法对非静态方法进行静态引用
这是我声明变量、get和set方法的地方。他们都在同一个班里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
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;
}
}