我有两个java类。一个是NewFrame.java,其中包含表单(按钮,文本字段)。另一个是Main.java,我在其中放置了mysql的连接字符串:
Main.java看起来像这样:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
// TODO code application logic here
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employee_record", "root", "password");
PreparedStatement statement = con.prepareStatement("select * from employee");
ResultSet result = statement.executeQuery();
}
}
如何从main.java继承,以便NewFrame.java中的表单可以普遍访问其中的声明? 请帮忙。感谢
答案 0 :(得分:2)
解决问题的更好方法是创建实用程序类
public class DataBaseHandler{
public static Connection getConnection(){
//...
}
public static Object executeQuery(String query){
//...
}
}
答案 1 :(得分:1)
假设NewFrame扩展了JFrame或Frame,你无法通过继承来实现,因为Java只支持单实现继承(extends)和多接口继承(实现)。
您可能会这样做:
public abstract class DatabaseFrame
extends JFrame
{
// common code goes here
}
public class NewFrame
extends DatabaseFrame
{
// will have to have a main method here
}
然后拉出当前处于main的代码并将其放入抽象类中的方法/变量中。
答案 2 :(得分:1)
您需要公开与外部类的连接,如果您需要在其上执行语句,只需提供Main.java
public static ResultSet executeStatement(String string) throws SQLException
{
return con.prepareStatement(string).executeQuery();
}
请注意,您必须捕获或撤回SQLException
..并且连接需要是静态的。这将允许您通过调用Main.executeStatement("select ...");
这种方法很简单,但可能更面向对象,可能在你的情况下还可以,因为你似乎只需要一个连接。
答案 3 :(得分:0)
static import会让你大部分时间到达那里。话虽如此,我不能劝阻它的使用,但它确实违背了面向对象编程的精神。