JDBC

JDBC(Java Database Connectivity)是数据库连接,是一套执行SQL语句的JavaAPI。应用程序可以通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、更新、新增和删除的操作。

DML,DDL,DCL

  • DML
    数据操纵语言,比如SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。
  • DDL
    数据库定义语言,比如CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
  • DCL
    数据库控制语言,是用来设置或更改数据库用户或角色权限的语句

常用API

  • Driver接口
    用于加载JDBC驱动程序必须实现的接口,在编写JDBC的时候,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中
  • DriverManager类
    用于加载JDBC驱动并且创建于数据库的连接。在该类中,定义了两个比较重要的静态方法。

方法名称

功能描述

registerDriver(Driver driver)

该方法用于向DriverManager中注册给定的JDBC驱动程序

getConnection(String url,String user,String pwd)

该方法用于建立和数据库的连接,并返回表示连接的Connection对象

  • Connection接口
    代表Java程序与数据库的连接,只有获得该连接对象后才能访问数据库。常用的方法有

方法名称

功能描述

getMetaData()

该方法同于返回表示数据库的元数据的 DatabaseMetaData对象

createStatement()

用于创建一个Statement对象并将SQL语句发送导数据库

prepareStatement(String sql)

用于创建一个PreparedStatement对象并将参数化的SQL语句发送到数据库

prepareCall(String sql)

用于创建一个CallableStatement对象来调用数据库的存储过程

  • Statement接口
    用于执行静态的SQL语句,并返回一个结果对象。该接口的对象通过Connection实例的createStatement()方法获得。常用的方法有

方法名称

功能描述

execute(String sql)

用于执行各种SQL语句,该方法返回一个boolean类型的值,如果为true,表示所执行的SQL语句有查询结果,可通过Statement的getResultSet()方法获得查询结果

executeUpdate(String sql)

用于执行SQL语句中的INSERT、UPDATE和DELETE语句。该方法返回一个int类型的值,表示数据库中受该SQL语句影响的记录条数

executeQuery(String sql)

用于执行SQL语句中的SELECT语句,该方法返回一个表示查询结果的ResultSet对象

  • PreparedStatement接口
    是Statement的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数SQL语句的执行操作,引用该接口中的SQL语句可以使用占位符“?”来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值。常用的方法有

方法名称

功能描述

executeUpdate()

在此PreparedStatement对象中执行SQL语句,该语句必须是一个DML语句或者是无返回内容的SQL语句,比如DDL语句

executeQuery()

在此PreparedStatement对象中执行SQL语句,该方法返回的是ResultSet对象

setInt(int parameterIndex,int x)

将指定参数设置为给定的int值

setFloat(int parameterIndex,float x)

将指定参数设置为给定的float值

setString(int parameterIndex,String x)

将指定参数设置为给定的String值

setDate(int parameterIndex,Date x)

将指定参数设置为给定的Date值

addBatch()

将一组参数添加到此PreparedStatement对象的批处理命令中

setCharacterStream(int parameterIndex,java.io.Reader reader,int length)

将指定的输入流写入数据库的文本字段

setBinaryStream(int parameterIndex,java.io.InputStream x,int length)

将二进制输入流数据写入到二进制字段中

注意:setDate()方法可以设置日期内容,但参数Date的类型是java.sql.Date,而不是java.util.Date

  • ResultSet接口
    用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。在ResultSet接口内部有一个指向表格数据航的游标(或指针),ResultSet对象初始化的时候,游标在表格的第1行之前,调用next()方法可将游标移动到下一行。如果下一行没有数据,则返回false。常用的方法有

方法名称

功能描述

getString(int columnIndex)

用于获取指定字段的String类型的值,参数columnIndex代表字段的索引

getString(String columnName)

用于获取指定字段的String类型的值,参数columnName代表字段的名称

getInt(int columnIndex)

用于获取指定字段的int类型的值,参数columnIndex代表字段的索引

getInt(String columnName)

用于获取指定字段的int类型的值,参数columnName代表字段的名称

getDate(int columnIndex)

用于获取指定字段的Date类型的值,参数columnIndex代表字段的索引

getDate(String columnName)

用于获取指定字段的Date类型的值,参数columnName代表字段的名称

next()

将游标从当前位置向下移一行

absolute(int row)

将游标移动到此ResultSet对象的指定行

afterLast()

将游标移动到此ResultSet对象的末尾,即最后一行之后

beforeFirst()

将游标移动到此ResultSet对象的开头,即第一行之前

privious()

将游标移动到此ResultSet对象的上一行

last()

将游标移动到此ResultSet对象的最后一行