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对象的最后一行 |