Java之JDBC

1.JDBC是什么
JDBC全称Java Datebase Connection(Java数据库连接),是Java中连接数据库的模块,由于不同的数据库语法有差异,而这些数据库又都是常用的流行数据库,不能有统一的实现,所以Java提供了数据库操作的API,由各数据库公司提供API实现,也就是驱动,这样就无需了解不同数据库的语法,Java可以用统一的方式操作不同数据库。

Java之JDBC_第1张图片
JDBC架构.png

2.JDBC操作数据库
要操作数据库,首先要有数据库的驱动程序,在所用的数据库官网下载驱动程序到本地,再进行下面操作。(以MySQL为例)

1)添加MySQL的驱动程序到类库
mysql官网下载jdbc驱动程序mysql-connector-java-x.x.x-bin.jar添加到当前工作空间
2)创建java文件,操作数据库
I.定义数据库所需的信息如用户名、密码、驱动名称、数据库URL,更好的方式是这些信息应该从配置文件中读取,放在程序中会被他人很容易获取。

    // 创建数据库连接信息
    String user = "root";
    String password = "root";
    String driver ="com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/company";

II.加载jdbc驱动

    // 加载驱动
    Class.forName(driver);

III.连接数据库

    // 通过驱动创建数据库连接
    Connection conn = DriverManager.getConnection(url, user, password);

IV.执行SQL语句
第一种方式Statement

    // 创建数据库SQL控制台
    Statement state = conn.createStatement();

    // 执行语句并返回结果集
    String selectStr = "select * from salary";
    ResultSet rs = state.executeQuery(selectStr);

第二种方式PreparedStatement:可以事先不设置参数,用到传参。

    // 创建SQL控制台
    PreparedStatement ps = conn.prepareStatement("select * from salary where EmployeeID = ?;");
    // 设置参数
    ps.setInt(1, 3);
    // 执行语句并返回结果集
    ResultSet rs = ps.executeQuery();

V.遍历表结果

    while(rs.next()){
        System.out.println(rs.getInt(1)+" "+rs.getString(2));
    }

3.为什么要使用Class.forName("")加载驱动
我们来分析两种情况就理解了为什么要加载驱动,前提是要先明白类加载机制,Class.forName( )操作是加载class文件,并初始化(如果该类有父类,先初始化父类,再初始化当前类)。
1)自己定义一个Operation接口,其中有一个抽象方法operate( ),定义两个类分别为Add和Sub,实现Operation接口并重写operate( )方法。

使用Operation接口的时候,我的程序这样写

// 创建Add类实例赋值给ope
Operation ope = new Add();
// 调用Add中的operate()
ope.operate();
// 创建Sub类实例赋值给ope
ope = new Sub();
// 调用Sub中的operate()
ope.operate();

这段代码是不用Class.forName(Add)或者Class.forName(Sub)的,因为很明确的知道实现类是Add或者Sub,new Add()和new Sub()的时候就已经加载类并初始化,且加载并初始化接口Operation,此时Operation接口、Add类、Sub类都在内存中。
2)Java提供JDBC API,各数据库公司提供API的实现。
具体代码请看第二部分(2.JDBC操作数据库)

JDBC提供统一的方式操作数据库,不论是MySQL、SQLserver还是Oralce,甚至是其他NoSQL数据库,JDBC不需要知道知道具体是哪个公司的数据库,只需要在配置文件中设置用户名、密码、URL、驱动等基本信息就可以操作数据库。为了满足这种要求,JDBC不能new某一个数据库驱动的实例,必须有一种统一的方式能加载所有数据库驱动。只要把Driver存储在配置文件中,Class.forName(Driver)就能加载不同公司的数据库驱动,也降低了程序的耦合度。

你可能感兴趣的:(Java之JDBC)