0

我在使用这种语法时遇到了一些麻烦:

Connection con = null;
Statement st = null;
ResultSet rset = null;

/**
 * Creates new form formUsers
 */
public formUsers() {
    initComponents();
    con = SQLInteract.SQLInteract();
    tableUpdate();
}

我正在尝试调用与我已经建立的 MySQL 数据库的连接,该数据库包含在该类的构造函数方法中。我只是以某种方式搞砸了语法,还是根本不能这样做?或者它真的像使用一样简单:

    SQLInteract Connect = new SQLInteract();

按照要求; 这是 SQLInteract 语法:

Connection con = null;
Statement st = null;
ResultSet rset = null;

public SQLInteract() {
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/chemsimdb","root","");
    }catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}
4

3 回答 3

2

您必须使用构造函数创建一个新实例:

SQLInteract connect = new SQLInteract();

或者您说您已经建立了一个连接,我假设它由 SQLInteract 的实例表示,因此您必须将现有实例的此引用传递给新类。PS:最好用大写字母命名你的类,所以 formUsers 应该是 FormUsers

public FormUsers(SQLInteract existingSqlConncetion) {
    initComponents();
    //con will hold a reference to the SQLInteract instance that has previously been constructed
    con = existingSqlConnection;
    tableUpdate();
}
于 2013-04-30T16:52:24.193 回答
0

如果 MySQL 连接已经在该类中建立,那么在我看来(尽管我可能错了)你不应该调用构造函数。您应该使用该类的已经实例化的对象,该对象包含对 MySQL 连接的引用,并且只是请求该连接。

如果你的意思是“我已经做了”,你的意思是连接到数据库的代码在那个构造函数中,你只是想调用它,那么是的,你必须创建一个新对象:

SQLInteract connect = new SQLInteract();

这与您编写的内容之间的细微差别是连接中的小写 C,请记住,您在这里命名的是成员对象,而不是类(我认为这只是您的错字,但请确保)

于 2013-04-30T16:51:42.143 回答
-1

您说您已经建立了与数据库的连接。我假设你是这样做的:

SQLInteract sqlInteract = new SQLInteract();

然后,您需要做的是:

public formUsers() {
    initComponents();
    con = sqlInteract.con;
    tableUpdate();
}

但是,当然,SQLInteract您之前创建的实例必须在您想要连接的任何地方都可用。

此外,我强烈建议您遵循 Java 命名约定,该约定要求类(和构造函数)的名称以大写字母开头,而变量、方法(除了构造函数)和属性的名称以小写字母开头。

于 2013-04-30T17:33:14.903 回答