1

你好我有这个类,它包含一个 actionPerformed 来执行一个查询,它看起来像这样

    MysqlConnect db = new MysqlConnect();

@Override
public void actionPerformed(ActionEvent e) {

    if(e.getSource() == openKnop) {

             try {

                db.connectToAndQueryDatabase("test", "root", "root");
                System.out.println("connection established");

                Statement st = db.createStatement();
                String query = "SELECT id, name, job_id, location FROM person WHERE name = 'Tom Swift'";
                st.executeQuery(query);

                System.out.println("Selected query succesfull");


            } catch (SQLException e1) {
                e1.printStackTrace();
            }
             finally {
                 db.closeCon();
                    System.out.println("connection closed");
             }
    }

和我的 MysqlConnect(); 类看起来像这样

    public class MysqlConnect{

    protected Connection con;

    public void connectToAndQueryDatabase(String database, String username, String password) throws SQLException {
        con = null;
            try {
                con = DriverManager.getConnection(
                                     "jdbc:mysql://localhost:3306/" + database,
                                     username,
                                     password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
    }

    public void closeCon() {
        con = null;
    }
}

但问题出在一线

语句 st = db.createStatement();

它不像我预期的那样工作。我收到一个未定义的错误..我该如何解决这个问题?

4

1 回答 1

3

该错误表示db“MysqlConnect”的引用没有createStatement方法。你需要一个 Connection 对象。让您connectToAndQueryDatabase返回 Connection 对象

 public Connection connectToAndQueryDatabase(String database, String username, String password) throws SQLException {
//your code

return con;
}

和 :

Connection conn = db.connectToAndQueryDatabase("test", "root", "root");
                System.out.println("connection established");

                Statement st = conn.createStatement();
                String query = "SELECT id, name, job_id, location FROM person WHERE name = 'Tom Swift'";
                st.executeQuery(query);
于 2012-12-25T16:28:11.223 回答