0

There are 4 java files, DAOManager.java; Person.java; MySQLPersonDAO.java; DAOManager.java; MainDAO.java. Files are in the same folder.

PersonDAO.java

public interface PersonDAO {
    public void savePerson(Person p) throws Exception;
}

Person.java

public class Person {
    private int id;
    private String name;

    public Person(String n){
        name = n;
    }

    public Person(int i, String n){
        id = i;
        name = n;
    }

    public int getId(){
        return id;
    }

    public String getName(){
        return name;
    }
}

MySQLPersonDAO.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySQLPersonDAO implements PersonDAO{
    public void savePerson(Person person) throws Exception{
        String name = person.getName();
        
        //membuat koneksi, nama, db, user, password, menyesuaikan
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/namaDatabase?serverTimezone=UTC","root","");
        
        //kerjakan mysql query
        String query = "INSERT INTO person(name) VALUES('"+name+"')";
        System.out.println(query);
        Statement s = con.createStatement();
        s.executeUpdate(query);
        
        //tutup koneksi database
        con.close();
    }
}

DAOManager.java

public class DAOManager{
    private PersonDAO personDAO;
    
    public void setPersonDAO(PersonDAO person){
        personDAO = person;
    }
    
    public PersonDAO getPersonDAO(){
        return personDAO;
    }
}

MainDAO.java

public class MainDAO{
    public static void main(String args[]){
        Person person = new Person("Ben");
        DAOManager m = new DAOManager();
        m.setPersonDAO(new MySQLPersonDAO());
        try{
            m.getPersonDAO().savePerson(person);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

I've downloaded MySQL JDBC Driver (platform independent) and put mysql-connector-java-version.jar into /Library/Java/Extensions and restart my mac, but after I tried to compile it gave me this error:

user@user-MacBook-Pro per 9 % javac PersonDAO.java
user@user-MacBook-Pro per 9 % javac Person.java 
user@user-MacBook-Pro per 9 % javac MySQLPersonDAO.java
MySQLPersonDAO.java:23: error: cannot find symbol
        Statement s = con.createStatement();
        ^
  symbol:   class Statement
  location: class MySQLPersonDAO
1 error

How to solve this so that I can connect my java files into MySQL database on my mac? Thanks in advance!

Downloaded MySQL JDBC Driver and put the .jar files into /Library/Java/Extensions, then tried to compile the java files.

furfearz
  • 3
  • 2
  • You seem to be missing relevant import statements in MySQLPersonDAO.java. – ndc85430 Jun 11 '23 at 04:47
  • what does it mean? is the java extensions hasn't been read by my mac? I've added import java.sql library – furfearz Jun 11 '23 at 04:50
  • 1
    You're missing the import for `java.sql.Statement` in that file. – ndc85430 Jun 11 '23 at 05:03
  • For what it is worth, `Statement` is a standard Java SE class. You don't need the JDBC driver to be on the compile-time classpath to use it. You just need to `import` it. – Stephen C Jun 11 '23 at 06:31

0 Answers0