初识JDBC

Posted Cardiolith

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识JDBC相关的知识,希望对你有一定的参考价值。

一. JDBC简介

JDBC全称Java Date Base Connectivity(Java数据库连接),是一种用于执行SQL语句的Java API,可以为多种数据库提供统一访问(“编写一次,处处运行”)。

简单来说,JDBC是搭建服务器应用程序与数据库的桥梁。

 

二. 数据库驱动

安装好数据库之后,我们的应用程序也是不能直接访问数据库,而是必须要通过相应的数据库驱动程序,通过驱动程序与实际的数据库的通信。

 

三. 常用接口

1.Driver接口

    Driver接口由数据库厂商提供实现,Java开发人员只需要使用这个接口。

    在编程中要连接到数据库,就需要装载特定厂商的数据库驱动程序,不同的数据库有不同的装载方法。

    装载mysql驱动:Class.forName("com.mysql.jdbc.Driver");

    装载Oracle驱动:Class.forName("com.jdbc.driver.OracleDriver");

2.DriverManager接口

    DriverManager管理一组JDBC驱动程序的基本服务。

    它跟踪可用的驱动程序,并在数据库和相应的驱动之间建立连接。

3.Connection接口

    Connection接口代表与特定的数据库的连接(会话),要对数据表中的数据进行操作,首先要获取数据库连接。Connection实现就像在应用程序中与数据库之间开通了一条     渠道。

    通过DriverManager类的getConnection()方法可获取Connection实例。

    连接MySQL数据库:Connection con = DriverManager.getConnection("jdbc:mysql://host:port/datebase", USERNAME, PASSWORD);

    连接Oracle数据库:Connetion con = DriverManager.getConnection("jdbc:oralce:thin:@host:port:datebase");

4.Statement接口

    Statement是Java执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL静态语句并返回结果生成的对象。

    三种Statement类:

        - Statement:由createStatement创建,用于发送简单的SQL语句(不带参数)。

        - PreparedStatement:继承自Statement接口,由preparedStatement创建,用于发送含有一个或多个参数的SQL语句。PreparedStatement对象比Statement对象的效率           更高,并且可以防止SQL注入,所以我们一般都使用PreparedStatement。

        - CallableStatement:继承自PreparedStatement接口,由方法prepareCall创建,用于调用存储过程。

    常用方法:

        - excute(String sql):执行给定的 SQL 语句,该语句在返回一个布尔值时用于反映SQL语句是否执行成功。

        - excuteQuery(String sql):执行select语句,该语句返回单个 ResultSet 对象。

        - executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。

        - addBatch(String sql) :将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。

        - executeBatch():向数据库发送一批sql语句执行,如果全部命令执行成功,则返回更新计数组成的数组。

5.ResultSet接口

    数据库结果集的数据表,通常通过执行查询数据库的语句生成。

    ResultSet提供检索不同类型字段的方法,常用的有:

        - getString(int index)、getString(String columnName):获得在数据库里是varchar、char等类型的数据对象。

        - getFloat(int index)、getFloat(String columnName):获得在数据库里是Float类型的数据对象。

        - getDate(int index)、getDate(String columnName):获得在数据库里是Date类型的数据。

        - getBoolean(int index)、getBoolean(String columnName):获得在数据库里是Boolean类型的数据。

        - getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。

    ResultSet还提供了对结果集进行滚动的方法:

        - next():移动到下一行

        - Previous():移动到前一行

        - absolute(int row):移动到指定行

        - beforeFirst():移动resultSet的最前面。

        - afterLast() :移动到resultSet的最后面。

使用后依次关闭对象及连接:ResultSet → Statement → Connection

 

四. 使用JDBC步骤

加载JDBC驱动程序 → 建立数据库连接Connection → 创建执行SQL的语句Statement → 处理执行结果ResultSet → 释放资源

1. 注册驱动 (只做一次)

  方式一:Class.forName(“com.MySQL.jdbc.Driver”);
  推荐这种方式,不会对具体的驱动类产生依赖。
  方式二:DriverManager.registerDriver(com.mysql.jdbc.Driver);
  会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

2. 建立连接

    Connection con = DriverManager.getConnection(url, username, password);

3. 创建执行SQL语句的statement

//Statement  
String id = "5";
String sql = "delete from table where id=" +  id;
Statement st = conn.createStatement();  
st.executeQuery(sql);  
//存在sql注入的危险
//如果用户传入的id为“5 or 1=1”,那么将删除表中的所有记录

4. 处理执行结果(ResultSet)

1 ResultSet rs = ps.executeQuery();  
2 While(rs.next()){  
3     rs.getString(“col_name”);  
4     rs.getInt(1);  
5     //…
6 }  

5. 释放资源

//数据库连接(Connection)非常耗资源,尽量晚创建,尽量早的释放 //都要加try catch 以防前面关闭出错,后面的就不执行了 1 try {
    if (rs != null) {
        rs.close();
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try {
        if (st != null) {
            st.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 

五. 安装教程(包括MyEclipse,MySQL,MySQL Connector)(亲测有效)

myeclipse-2017 链接:https://pan.baidu.com/s/13kcZ7l3XIGD7oQGtPa38jw 密码:ltmw

myeclipse破解文件 链接:https://pan.baidu.com/s/1u2CXKverCgFdWedyFk1yFg 密码:n05h

myeclipse安装教程来自园友博客 链接:https://www.cnblogs.com/qianjun2017/p/8108253.html

Windows版本MySQL下载地址:https://dev.mysql.com/downloads/file/?id=479669

MySQL下载后安装配置 来自CSDN博客 链接:https://blog.csdn.net/xielong0509/article/details/80636843

MySQL Connector 链接:https://pan.baidu.com/s/1poBOudWobnxIrpSFLKs9Og 密码:hkfj

- 关于Java Web Project 导入数据库jar包

  复制mysql-connector-java文件目录下两个jar包 ,进入工程文件目录下WebRoot -> WEB_INF-> lib 右键粘贴 ,再分别对这两个jar包右键Build Path选择Add to build path.

 

---每天积累一点点,吃水不忘挖井人---

以上是关于初识JDBC的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

大数据必学Java基础(九十二):JDBC初识

初识JDBC

部分代码片段

Java初识方法