Hi Daniel,
java,.sql.Statement is an
interface. An interface is, indeed, just a list of methods. It's up to other classes to "implement" the interface by providing actual method bodies.
When you ask
JDBC for a Statement object, notice that you don't say
Statement s = new Statement();
instead you ask a Connection for a new Statement like this:
Statement s = connection.createStatement();
That method createStatement() returns not an instance of Statement, really, but an instance of a class that implements the Statement interface. The real name of that class is of no importance. In fact, every JDBC driver will provide its own such class, so there will be many of them. You don't need to know or care what that name is, but if you're curious, you can always say
System.out.println(connection.createStatement().getClass().getName());
Anayway, so that's what a JDBC driver is: it's mainly a collection of classes that implement each of the interfaces in the java.sql package; those implementations know how to talk to one particular kind of database.