JDBC


什么是JDBC

JDBC:就是java语言连接数据库

JDBC的本质:就是提供了sun公司接口的实现类

JDBC基本使用:
	1.导入jar包---放在java工厂下创建lib,目录--将所有第三方的jar包放入进来
	2.注册驱动
	Class.forName("com.mysql.jdbc.Driver");com.mysql.jdbc.Driver
	3.获取数据库连接
	DriverManager:驱动管理类(就是JDBC驱动服务)
	//url:统一资源定位符号:是链接的具体哪个数据库名 jdbc:mysql//localhost:3306/数据库名称
	//user:数据库用户名
	//password:数据库密码
	DriverManager.getConnection(url,user,password);
    4.准备sql语句
	5.通过数据库连接对象获取执行对象Statement:执行静态sql语句
	6.执行sql语句,向数据库服务器发送指令
	Statement方法:int executeUpdate(String url);
	7.返回结果
	8.释放资源
	

JDBC中涉及相关的核心类以及核心接口的API

Connectuion---java.sql.Connection
	成员方法:
		有关事务管理相关的方法
		与数据库执行对象的相关方法
Statement----java.sql.Statement
	执行对象:执行静态sql语句
	
	静态sql语句
		insert into 表名 values 
		delete from 表名
PereparedStatement---java.sql.PereparedStatement:预编译对象
		int executeUpdate(String sql):对预编译对象中sql语句直接操作
ResultSet -----java.sql.ResultSet:表示数据库结果集的数据库

	成员方法:
		boolean next():判断下一行是否存在有效数据
		getXXX(int columnIndex):根据列的索引值获取表中结果数据
		XXX getXXX(String columnIndex):

JDBC操作查询语句

ResultSet-------java.sql.ResultSet:查询数据表中的结果集

select * from...

封装工具类:DButils

将重复性的代码抽取出来
---将url,user,password,驱动核心类com.mysql.driver--封装到jdbc.properites文件中

使用工具类,完成insert into  ... update...delete...

Statement/PreparedStatement

Statement---会产生sql注入
PreparedStatement:(安全)--有效防止sql注入
String sql="select * from where username=? and password=?";
获取预编译对象
stmt= conn.PreparedStatement(sql);
给占位符号赋值
void setxxx(int parameterIndex,实际参数)
参数1:?是第几个占位符
参数2:实际参数
执行查询
rs=stmt.executeQuery();

Statement和PreparedStatement的区别

执行对象
	Statement操作的是静态sql语句
	DDL/DML语句
	DQL语句
	Statement发送sql到数据库中,操作sql语句效率低,存在字符串拼接,造成sql注入
	
	PreparedStatement:预编译对象
	通过连接对象获取预编译对象的同时将参数化的sql法功数据库进行预编译
	执行效率高.能够有效防止sql注入
	Statement:
	操作静态的sql语句,存在字符串拼接,造成sql注入,执行语句效率低
	PrepredStatement:
	预编译对象,通过连接对象获取预编译对象的同时
	将参数化的sql语句发送数据库进行预编译,执行效率高,可以有效地防止sql注入

JDBC方式处理事务

Connection对象:
void setAutoCommit(boolean autocommit):是否启用自动提交
void rollback():事务回滚
void commit():提交任务之后,持久更改

连接池技术

dbcp,c3p0,druid,jdbcTemplate.....连接池技术
dbcp,c3p0:技术老
druid:使用居多-----------阿里巴巴开源项目  "德鲁伊"

连接池:频繁的操作DML/DQL
	获取连接Connection对象--->使用完毕---->释放资源 (资源消耗大)
	
	提供一些蚕食
		最大连接数量 10
		等待时间 3000
		最小连接数量
		激活数量
		
		将连接池对象创建之后.可以重复利用,他关闭释放资源对象连接对象归还到连接池中...
		
		

druid连接池

阿里巴巴的开源项目
---通过githup上下载druid的项目

druid:使用居多----可以和springboot整合(druid-spring-boot-start:启动器)
连接速度很快---可以更有效的监控sql语句 查询语句的耗时以及并发时间

	1.导入核心jar包
	druid-1.0.9.jar
	2.在src目录执行核心配置文件
	jdbc.properties
	有一些基本参数信息
	连接池信息
	
druid里面内置信息
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb_02
username=root
password=root
initialSize=5	初始化连接数量5
maxActive=10	最大激活数量10
maxWait=3000	最大等待时间
	
	3.获取连接对象
	使用DruidDataSourceFactory:德鲁伊的物理数据源的工厂类
	静态方法
		public static DataSource cresateDateSource(Properties properties);
        

通用工具类:Dbutils的使用

//1.创建执行对象
	QueryRunner(DataSource ds)
//准备sql语句
	String sql="";
//执行更新
	QueryRunner
		update(String sql,Object...parameters)
		query(String sql,ResultSetHandler<?>rs,Object..parameters)
		
		ResultSetHandler 接口
			new BeanHandler<?>(Class<?>clazz):将查询的某一条记录封装到某个对象中
			new BeanListHandler<?>(Class<?> clazz);将查询的多条记录封装到List<?>集合中
			new SclarHandler<>()---->查询单行单列的-->返回值是一个long类型的
									举例:查询当前数据的总记录数
									select count(id) from 表名
					

测试

黑盒测试和白盒测试

	黑盒测试
		不考虑里面内部结构以及逻辑结构---->功能性测试
	白盒测试
		知道当前逻辑结构以及内部结构
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值