JDBC(2):核心类、接口以及实现简单连接

来源:互联网 发布:快递怎么找淘宝客户 编辑:程序博客网 时间:2024/06/05 12:04

JDBC核心类、接口

重要包名:java.sql.* 和 javax.sql.*

Driver接口

  • 使用:表示java驱动程序接口,所有具体的数据库厂商要来实现此接口。
  • 重要方法:
  • 字段含义:
    URL语法: jdbc协议:数据库子协议://主机:端口/数据库
    user: 数据库的用户名
    password: 数据库用户密码

DriverManager类

  • 使用:驱动管理器类,用于管理所有注册的驱动程序
  • 重要方法:
    1. registerDriver(。driver) : 注册驱动类对象
    2. Connection getConnection(url,user,password); 获取连接对象

Connection接口

  • 使用:驱动管理器类,用于管理所有注册的驱动程序
  • 重要方法:
    1. Statement createStatement() : 创建Statement对象
    2. PreparedStatement prepareStatement(String sql) : 创建PreparedStatement对象
    3. CallableStatement prepareCall(Str
    4. ing sql) :创建CallableStatement对象

Statement接口

  • 使用:用于执行静态的sql语句
  • 重要方法:
    1. int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML)
    2. ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL)

PreparedStatement接口

  • 使用:继承Statement接口,用于执行预编译的sql语句
  • 重要方法:
    1. int executeUpdate(String sql) : 执行预编译的更新sql语句(DDL,DML)
    2. ResultSet executeQuery(String sql) :执行预编译的的查询sql语句(DQL)

CallableStatement接口

  • 使用:继承Statement接口,用于执行存储过程的sql语句(call xxx)
  • 重要方法:
    1. ResultSet executeQuery() : 调用存储过程的方法

ResultSet接口

  • 使用:用于执行预编译的sql语句
  • 重要方法:
    1. boolean next() : 将光标移动到下一行
    2. getXX() : 获取列的值

简单连接

注册驱动

代码:Class.forName("com.mysql.jdbc.Driver");
解释: DriverManager类的registerDriver()方法的参数是java.sql.Driver,但java.sql.Driver是一个接口,实现类由mysql驱动来提供,mysql驱动中的java.sql.Driver接口的实现类为com.mysql.jdbc.Driver。那么注册驱动的代码如下:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
上面代码虽然可以注册驱动,但是出现硬编码(代码依赖mysql驱动jar包),如果将来想连接Oracle数据库,那么必须要修改代码的。并且其实这种注册驱动的方式是注册了两次驱动
JDBC中规定,驱动类在被加载时,需要自己“主动”把自己注册到DriverManger中。
mysql驱动包com.mysql.jdbc.Driver类中对此实现为:

package com.mysql.jdbc;import java.sql.DriverManager;import java.sql.SQLException;// Referenced classes of package com.mysql.jdbc://            NonRegisteringDriverpublic class Driver extends NonRegisteringDriver implements java.sql.Driver {    public Driver() throws SQLException {    }    static {        try {            DriverManager.registerDriver(new Driver());        } catch (SQLException E) {            throw new RuntimeException("Can't register driver!");        }    }}

com.mysql.jdbc.Driver类中的static块会创建本类对象,并注册到DriverManager中。这说明只要去加载com.mysql.jdbc.Driver类,那么就会执行这个static块,从而也就会把com.mysql.jdbc.Driver注册到DriverManager中,所以可以把注册驱动类的代码修改为加载驱动类。

获取连接

方式一(不推荐):

    @Test    public void testConnection() throws SQLException {        // 1.创建驱动程序类对象        Driver driver = new com.mysql.jdbc.Driver(); //不推荐直接new,多次new浪费内存        String url = "jdbc:mysql://127.0.0.1:3306/address";        String user = "root";         String password = "password";        Properties prop = new Properties();        prop.setProperty("user", user);        prop.setProperty("password", password);        // 2.连接数据库        Connection conn = (Connection) driver.connect(url, prop);        // 3.输出连接信息        System.out.println(conn);          }

方式二(推荐):

    @Test    public void testConnection2() throws SQLException {        String driver = "com.mysql.jdbc.Driver";         String url = "jdbc:mysql://127.0.0.1:3306/address";             String username = "root";            String password = "password";         Connection conn = null;         try {             Class.forName(driver);             // 注册驱动程序(可以注册多个驱动程序)             // DriverManager.registerDriver(driver);//有了Class.forName这里可以省略             conn = (Connection) DriverManager.getConnection(url, username, password);             System.out.println(conn);         } catch (Exception e) {             e.printStackTrace();         }    } 

结果:

com.mysql.jdbc.JDBC4Connection@39477a84

参考:

http://www.importnew.com/16799.html
http://blog.csdn.net/xieyuooo/article/details/8502585
http://blog.csdn.net/u014726937/article/details/52836305
http://blog.csdn.net/qq_26676207/article/details/52953664#t1
http://www.cnblogs.com/gaojing/archive/2012/03/23/2413638.html

0 0