数据库总结
jdbc 原生的操作db
1.贾 --》家(驱动)
加载驱动
Class.forName("com.mysql.jdbc");-->引入的mysql的jar
2.连
DriverMananger.getConnection(url,用户名,密码);
3.sql
编写sql
4.执行 statement -->sql拼接 麻烦 容易出错 sql注入
prepareStatement --》采取占位符的方式 ?
select * from student where stuo=?
给参数赋值
excuteUpdate() 增删改
excuteQuery() 查询
5. 关闭相关对象 释放资源
------进行封装 编写工具类
分层--》
0.DB
1.数据访问层
2.业务逻辑层
3.界面层
-->贯穿起来 实体类(一个表对应一个实体类 表名与类名尽量相同)
列名与属性名 相同
--查询
将表中的一行记录封装为实体类的一个对象
后续 我们使用框架自动将表中的一行记录 封装成某个类的对象 简化我们的代码
属性名与列名 相同来完成这个操作
便于后续代码的修改与维护
---问题
1.在一个项目中 我们对数据库做了多种操作,在每一个操作中都打开与数据库
的链接,操作完以后,关闭数据库的链接
频繁的连接关闭数据库,资源开发很大
2. 所有的操作的代码都需要我们自己去编写,
3. 当实现查询功能的时候,需要遍历ResultSet 结果集 并且需要将每列的数据转成对象的属性
---》数据连接池 +官方提供的封装好的操作数据库的工具类
常用的数据连接池
C3P0 +apache提供的工具类 来操作数据库解决上面的问题
DBCP
druid 德鲁伊 处理高并发 性能是比较高 阿里提供
1、导入jar
mysql的驱动包
c3p0相关jar
apache工具类的相关jar
2.编写数据连接池的配置文件( 配置文件的名称是固定 格式.xml)
driver
url
username
password
默认建立的连接数量
当连接池所有的连接被使用 等待的时间
........
--注意事项:
1.使用DBUtil
1.实体类 需要有无参构造函数
2.属性的set方法不缺少
3.属性名称首字母尽量小写
--查询所有学生的学号,姓名,地址 年级名称
--如果 查询的结果集没有类与它进行匹配
-- 创建辅助实体类
--》作用:与需要的查询结果的列能够一一匹配
-- 如果结果列 与某个实体类属性差异较少, 可以在实体类多添加一个属性
--数据库
mysql
三建
create database 数据库名;
表
约束
主键约束
外键约束
默认约束
唯一约束
非空约束(not null)
--
单行插入
多行插入
--删除
delete from .... 单纯的删除数据
TRUNCATE --- 将表摧毁 再从新创建 数据无法恢复
改--
update
---查询
单个的查询
子查询(将某个查询的结果作为条件 --》查询 、修改,删除)
内连接查询
外连接查询
左外连接
右外连接
自连接查询
索引
主键索引
外键索引
全文索引
常规索引(外键索引)
事务 --》一组操作
原子性 一致性 隔离性 持久性
1。关闭事务的自动提交()
2.开启事务 JDBC--> connection.setAutoCommit(false)
2.提交事务&回滚事务
--第一个版块 数据库 java来操作数据库
第二个版块 html+css
第三个 jsp(动态页面的开发)