public class RetriveUser extends ContactInformation {
public void retriveUser(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = this.getContentPane();
this.setLayout(new FlowLayout());
Connection connection;
ResultSet resultSet;
Statement statement = null;
Vector data = new Vector();
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/contact_info","root","");
System.out.println("Connection established");
statement = connection.createStatement();
resultSet = statement.executeQuery(retriveUser);
ResultSetMetaData metaData =resultSet.getMetaData();
int columns = metaData.getColumnCount();
while (resultSet.next()){
Vector row = new Vector(columns);
for (int i=1; i<=columns; i++){
row.addElement(resultSet.getObject(i));
}
data.addElement(row);
}
} catch (SQLException e) {
System.out.println("Exception occur");
e.printStackTrace();
}
Vector columnName = new Vector();
columnName.addElement("id");
columnName.addElement("first_name");
columnName.addElement("last_name");
columnName.addElement("district");
columnName.addElement("city");
columnName.addElement("address");
columnName.addElement("father_name");
columnName.addElement("mobile_no");
columnName.addElement("email");
table = new JTable(data,columnName);
JPanel tabPanel = new JPanel();
tabPanel.add(table);
content.add(tabPanel,BorderLayout.SOUTH);
}
}
我已经做了一个主班,并且正在这堂课中扩展主班。因此,虽然我已经从RetriveUser.retriveUser()等主类调用了该类;它显示了无法从静态方法引用的非静态方法..因此,如何从主类ContactInformation类进行调用。
最佳答案
您的主类是静态的,您的retriveUser()
不是。您可以将retriveUser方法标记为静态(由于在该方法中使用实例变量,现在将无法使用),或者像这样创建RetriveUser
的实例
public static void main(String[] args) {
new RetriveUser().retriveUser();
}
至少可以从语法上解决您的问题。
请注意,用于与数据库建立连接的代码应单独管理。 GUI(JTable)和用户检索也是如此。对于此示例,您至少应具有3个单独的类。