一年一度毕业季,又到了简历、offer漫天飞,失望与希望并存的时节。在IT行业,高校毕业生求职时,面临的第一道门槛就是技能与经验的考验,但学校往往更注重学生的理论知识,忽略了对学生实践能力的培养,因而导致很多求职者在面试中败下阵来。在毕业生所学知识普遍脱离职场实战的大趋势下,《Java Web开发实战》应运而生,此教材由千锋教研院高教产品研发部编著、清华大学出版社出版,将理论应用于实践,切实提高学生的实战能力。
下面给大家分享点本书的干货内容,关于JDBC内容继续给大家学习,想要完整资料的可以衔接查看之前的文章。
据库可以是不相同的。
1.1.1 JDBC的常用API
JDBC定义了一系列操作数据库的接口和类,这些接口和类位于java.sql包中。接下来,本节将详细介绍JDBC的常用API。
1. Driver接口
Driver接口是所有JDBC驱动程序必须要实现的接口,该接口提供给数据库厂商使用。在编写JDBC程序时,必须先装载特定数据库厂商的驱动程序,装载驱动程序通过java.lang.Class类中的静态方法forName()实现。
2. DriverManager类
DriverManager类用于加载JDBC驱动并创建与数据库的连接,DriverManager类的常用方法,具体如表1.1所示。
表1.1 DriverManager的常用方法
方法名称
功能描述
registerDriver(Driver driver)
注册数据库的驱动程序
getConnection (String url,String user,String password)
获取数据库连接
3. Connection接口
Connection接口表示Java程序和数据库的连接,Java程序和数据库的交互是通过Connection接口来完成的。Connection接口的常用方法,具体如表1.2所示。
表1.2 Connection接口的常用方法
方法名称
功能描述
createStatement()
创建向数据库发送sql的Statement对象
prepareStatement(String sql)
创建向数据库发送预编译sql的PrepareSatement对象
prepareCall(String sql)
创建执行存储过程的CallableStatement对象
4. Statement接口
Statement接口用于向数据库发送SQL语句,Statement接口提供了三个执行SQL语句的方法,具体如表1.3所示。
表1.3 Statement接口的方法
方法名称
功能描述
execute(String sql)
运行语句,返回是否有结果集
executeQuery(String sql)
运行select语句,返回ResultSet结果集
executeUpdate(String sql)
运行insert/update/delete操作,返回更新的行数
5. PreparedStatement接口
继承自Statement接口,用于执行预编译的SQL语句,PreparedStatement接口提供了一些对数据库进行基本操作的方法,具体如表1.4所示。
表1.4 PreparedStatement接口的方法
方法名称
功能描述
executeQuery(String sql)
运行select语句,返回ResultSet结果集
executeUpdate(String sql)
运行insert/update/delete操作,返回更新的行数
addBatch(String sql)
把多条sql语句放到一个批处理中
executeBatch()
向数据库发送一批sql语句执行
6. CallableStatement接口
继承自PreparedStatement接口,由方法prepareCall()创建,用于调用SQL存储过程。CallableStatement接口提供了一些对数据库进行基本操作的方法,具体如表1.5所示。
表1.5 CallableStatement接口的方法
方法名称
功能描述
wasNull()
查询最后一个读取的OUT参数是否为SQL类型的Null值
setNull(String parameterName,int sqlType)
将指定参数设置为SQL类型的NULL
getInt(int parameterIndex )
以Java语言中int值的形式获取数据库中Integer类型参数的值
setString(String parameterName,String x)
将指定参数设置为给定的Java类型的String值
registerOutParameter(int parameterIndex, int sqlType)
按顺序位置parameterIndex将OUT参数注册为SQL类型
7. ResultSet接口
ResultSet接口表示执行select查询语句获得的结果集,该结果集采用逻辑表格的形式封装。ResultSet接口中提供了一系列操作结果集的方法,具体如表1.6所示。
表1.6 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)
向数据库发送一批sql语句执行
next()
移动到下一行
previous()
移动到前一行
absolute(int row)
移动到指定行
beforeFirst()
移动resultSet的最前面
afterLast()
移动到resultSet的最后面
ResultSet对象维护了一个指向表格数据行的指针,指针默认在第一行之前,调用next()或previous()等移动指针的方法,可以使指针指向具体的数据行,进而调用getObject()方法获取指定的查询结果。
8. ResultSetMetaData接口
ResultSetMetaData接口用于获取关于ResultSet 对象中列的类型和属性信息的对象。ResultSetMetaData接口的常用方法,具体如表1.7所示。
表1.7 ResultSetMetaData接口的常用方法
方法名称
功能描述
getColumCount()
返回所有字段的数目
getColumName(int colum)
根据字段的索引值取得字段的名称
getColumType (int colum)
根据字段的索引值取得字段的类型
1.1.2 JDBC URL
JDBC URL提供了一种标识数据库的方法,它可以使JDBC程序识别指定的数据库并与之建立连接。大家在编写JDBC程序时, 无需关注JDBC URL的形成过程,只需使用与所用的数据库一起提供的URL即可。
JDBC URL的标准语法如图1.4所示(以MySQL为例)。
图1.1 JDBC URL的标准语法
从图1.4中可以看到,JDBC URL由协议、子协议、主机端口、数据库名称、参数等组成。其中,JDBC URL中的协议总是jdbc,子协议因数据库厂商的不同而有所差异,在本例中为mysql,主机为数据库所在主机地址,端口为MySQL数据库的默认端口号3306,参数多为连接属性的配置信息,包括数据库的用户名、密码、编码、套接字连接的超时等,JDBC URL的常用参数如表1.8所示。
表1.8 JDBC URL的常用参数
参数类型
参数名称
user
数据库用户名,用于连接数据库
password
用户密码,用于连接数据库
useUnicode
是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true
characterEncoding
当useUnicode设置为true时,指定字符编码。比如可设置为gb2312、gbk、utf8
autoReconnect
当数据库连接异常中断时,是否自动重新连接
autoReconnectForPools
是否使用针对数据库连接池的重连策略
failOverReadOnly
自动重连成功后,连接是否设置为只读
maxReconnectsautoReconnect
重试连接的次数
initialTimeoutautoReconnect
两次重连之间的时间间隔,单位:秒
connectTimeout
和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本
socketTimeoutsocket
操作(读写)超时,单位:毫秒。 0表示永不超时