JDBC概述
JDBC全称为Java Database Connectivity(Java数据库连接),是Java访问数据库操作的基础,是一种用于执行SQL语句的Java API,是一个规范
JDBC入门操作
- 搭建开发环境
创建项目后,在项目下创建lib目录,复制mysql驱动jar包粘贴在lib中,右击jar包build path—Add build path
MySQL驱动下载地址MySQLConnector/J - 编写程序,在程序中加载数据库驱动
DriverManager.registerDriver(new Driver()); - 和MySQL数据库建立连接
Connection conn = DriverManager.getConnection(“jdbc:mysql:localhost:3306/jdbctest”,“用户名”,“密码”) - 创建用于向数据库发送SQL语句的Statement对象
Statement state = new Statement(); - 从代表结果集的ResultSet中取出数据
ResultSet rs = state.executeQuery(“sql”); - 断开与数据库的连接,并且释放相关资源
conn.close();state.close();rs.close();
JDBC的API
DriverManager:驱动管理类
- 主要作用
一:注册驱动
DriverManager.registerDriver(new Driver())会注册两次驱动,因为DriverManager类中的静态代码块有注册驱动的代码,通常注册驱动的方式为:**Class.forName(“com.mysql.jdbc.Driver”)**此语句作用为加载Driver类,从而执行其静态代码块,来注册驱动
二:获得链接
Connection getConnection(String url,String username,String password);
url写法:jdbc:mysql://localhost:3306/jdbctest
jdbc:协议
mysql:子协议
localhost:主机名
3306:端口号
jdbctest:数据库名
url简写:jdbc:mysql:///jdbctest 默认连接的数据是本机
Connection:连接对象
- 主要作用
一:创建用于执行SQL语句的对象
statement createStatement();执行SQL语句
preparedStatement prepareStatement(String sql);预编译SQL语句
CallableStatement prepareCall(String sql);执行SQL中的存储过程
二:进行事物的管理
setAutoCommit(boolean autoCommit);设置事务是否自动提交
commit();事务提交
rollback();事务回滚
Statement:执行SQL
- 主要作用
一:执行单条SQL语句
execute(String sql);执行SQL语句,执行select语句返回true,否则返回false
ResultSet executeQuery(String sql);执行SQL中的select语句,返回查询到的结果存入ResultSet结果集中
int executeUpdate(String sql):执行SQL中的insert/update/delete语句,返回影响的行数
二:批处理操作
addBatch(String sql):添加到批处理
executeBatch():执行批处理
clearBatch():清空批处理
ResultSet结果集
- 概述:执行查询语句后的结果的封装
- 主要作用
一:遍历查询的数据
next();判断是否存在下一个数据
二:获取某个特定数据
针对不同的类型的数据可以使用getXXX()来获取数据(如getInt/getLong)
getObject(String columnLabel):通过名称来获取object对象
JDBC的资源释放
jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResulSet,Statement和Connection对象。
特别是Connection对象,它是非常稀有的资源,用完之后必须马上释放,如果Connection不能及时,正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放
正确资源释放的代码
if(rs!=null){
try{
rs.close();
} catch(SQLException e){
e.printStackTrace();
}
rs=null;
}
手动将对象置为null,系统才能将其垃圾回收