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类调用。
答案 0 :(得分:2)
您的主要课程是静态的,retriveUser()
不是。您可以将retriveUser方法标记为静态(由于您在该方法中使用实例变量,因此无法正常工作)或者您创建RetriveUser
的实例
public static void main(String[] args) {
new RetriveUser().retriveUser();
}
这至少会在语法上解决你的问题。
请注意,创建与数据库的连接的代码应单独管理。 GUI(JTable)和用户检索也是如此。对于此示例,您应该至少有3个单独的类。
答案 1 :(得分:1)
这样的事情:
RetriveUser ru = new RetriveUser();
ru.retriveUser();