JDBC(Java语言操作数据库)
本质:由官方定义的一套操作关系型数据库的规则(即接口),由各个数据库厂商实现这套接口,提供数据库驱动的JAR包,可以使用这套接口编程,真正执行的是jar包中的实现类
步骤:
- 1.导入驱动jar包 *
2.注册驱动 *
3.获取数据库连接对象 Connection *
4.定义sql *
5.获取执行sql语句对象 Statement *
6.执行sql.接收返回结果 *
7.处理结果 *
8.释放资源
对象
DriverManager:驱动管理对象
- 注册驱动
明确程序使用哪个数据库驱动jar包
写代码:Class.forName(“com.mysql.jdbc.Driver”); 查看源码,在com.mysql.jdbc.Driver 中存在静态代码块, 静态代码块中注册的是
DriverManager.registerDriver - 获取数据库连接
DriverManager.getConnection
Connection:数据库连接对象
- 获取执行sql的对象
.createStatement()
.prepareStatement(String sql) - 管理实务
开启事务
.setAutoCommit(false);
提交事务
.commit();
回滚事务
.rollback();
Statement:执行SQL对象
- 执行sql语句【静态sql语句】
.executeUpdate( sql ); //执行DML(insert ,update,delete)语句,DDL(create,alter,drop)语句【返回值为int类型,为影响的行数,返回值>0执行成功】 - .executeQuery( sql ); //执行DQL(select)语句 【返回结果集对象】
- SQL注入问题
在拼接sql时,一些sql关键字参与字符串的拼接,会造成安全性问题
ResultSet:结果集对象
- .next(); //光标下移【返回boolean值,判断是否有数据】
- .getXxx(列名或列标号); //获取对应数据
prepareStatement(sql):执行SQL对象
- 执行sql语句
- 解决sql注入问题,执行预编译sql语句,参数使用?作为占位符
给?赋值:setXxx(?位置,?的值)
数据库连接池
一个存放数据库连接的容器(集合)【节约资源,用户访问高效】
当系统初始化好,容器被创造,容器会申请一些连接对象;当用户来访问数据库时,从容器获取连接对象,访问结束释放会连接池
**
DataSource,标准接口
**
- 获取连接对象:getConnection( )
- 归还连接对象:如果是从连接池获取的,那么调用Close()就是归还
一般不实现,有数据库厂商实现 - C3P0:数据库连接池技术
导入包:本身的包和驱动器包
2.定义配置文件(命名必须为:c3p0-config.xml)放在src目录下
创建数据库连接池对象
获取连接 - Druid:数据库连接池实现技术,由阿里巴巴提供
1.导入jar包
2.定义配置文件
3.加载配置文件pro
4.创建数据连接池对象 ds=DruidDataSourceFactory.createDataSource(pro);
5.获取连接
Spring JDBC
Spring框架对JDBC的简单封装
步骤
- 1.导入JAR包
- 2.创建JdbcTemplate对象,依赖于数据源DataSource
- 3.调用Jdbc Template对象方法
- .update(sql,1); //增删改
- 查询
temp.queryForMap(sql,1); //结果集对象只能一个长度 【列名:Key,值:Value】
.queryForList(sql,1,2); //结果集没有限制
query():查询结果,将结果封装为JavaBean对象
query的参数:RowMapper * 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装 * new BeanPropertyRowMapper<类型>(类型.class)
.queryForObject(sql, Long.class); //一般用于查询聚合函数