问题:
引自:http://bbs.csdn.net/topics/391950254<span style="font-family:Courier New;">最近接触到jdbc,我有个疑问,建立连接的时候调用的都是接口,那么接口的方法是怎么实现的呢? 比如声明: Connection con; Statement sql; ResultSet rs; //Connection 、Statement 、ResultSet 都是接口 con=DriverManage.getConnection("jdbc:odbc:hello”,"",""); // DriverManage是一个类,getConnection是静 态方法,返回类型是Connection接口; sql=con.createStatement(); rs=sql.executeQuery(“SELECT *FROM table”); 我想问一下,Statement接口的getConnection,ResultSet接口的executeQuery方法都没有看到实现,怎么就直接用了。</span>
一份Mysql连接数据库的简单代码,就是查询输出一下123:
<span style="font-family:Courier New;">package csdn.question; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.After; import org.junit.Before; import org.junit.Test; public class ConnectionDB { private Connection conn=null; private PreparedStatement statement=null; private ResultSet rs=null; @Before public void getMysqlConnection() throws ClassNotFoundException, SQLException{ Class.forName(com.mysql.jdbc.Driver.class.getName()); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "dev", "dev"); } @Test public void test() throws SQLException{ statement= conn.prepareStatement("select 123"); rs = statement.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)); } } @After public void closeConnection(){ if(rs!=null){ try { rs.close(); } catch (Exception e) { } } if(statement!=null){ try { statement.close(); } catch (Exception e) { } } if(conn!=null){ try { conn.close(); } catch (Exception e) { } } if(conn!=null){ try { conn.close(); } catch (Exception e) { } } } } </span>
和其他连接数据的代码一样,开始先注册Mysql Driver:
Class.forName("com.mysql.jdbc.Driver");
为什么要注册Driver,Driver是什么东西?
先看java.sql.Driver类,所有driver 类必须实现的接口
加载com.mysql.jdbc.Driver这个类