Вообще, объект драйвера вручную никто сам не создаёт.
1. Нужный драйвер должен быть указан в classpath.
2. Перед получением коннекта к БД, вам нужно выполнить Class.forName(имя класса драйвера) - загрузчик классов загружает указанный класс, что приводит к инициализации статических полей и выполнение статических блоков этого класса. Причем тут статический блок? - в статическом блоке класса драйвера реализована регистрация в DriverManager-е.
Вот пример:
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
static { // статический блок
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
// остальной код опущен
}
после чего вот это DriverManager.getConnection(URL, name,pass) без проблем находит драйвер.
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/sonoo","root","root");
Хотя вы сами вручную и регистрируете драйвер, но DriverManager ваш драйвер не увидит. Возможно это как то связано с тем, что DriverManager и класс драйвера загружены разными загрузчиками...
Но так тоже можно получить коннект, вместо
connection = DriverManager.getConnection(URL, name,pass);
использовать
connection = driver.connect(....);