回顾
一、SQL语句
二、常用的数据库:Oracle DB2 MySQL
三、SQL组成
四、DDL:数据定义语言
CREATE ALTER DROP TRUNCATE
五、DML:数据操作语言
INSERT UPDATE DELETE
六、单表查询
七、数据完整性约束
1、实体完整性
2、域完整性
3、参照完整性:外键约束
一对多
多对多
一对一
八、多表的查询
1、交叉链接:cross join
2、内连接:inner join
3、外连接:left|right [outer] join
4、子查询
九、分组查询
SUM AVG COUNT
GROUP BY [HAVING…]
十、MySQL的数据库备份与恢复
JDBC:Java DataBase Connectivity,是SUN推出的操作数据库的规范。
JDBC和数据库驱动:规范和实现的关系。
JDBC:JDK中。java.sql.;javax.sql.;
驱动:去数据库厂商的网站下载
0、搭建开发环境:把数据库驱动的jar包加入到构建路径中。
1、注册驱动
2、获取与数据库的链接
3、创建代表SQL语句的对象
4、执行SQL语句
5、如果是查询语句:返回结果集。
6、释放资源
作用:
a、注册驱动
方式一:DriverManager.registerDriver(new com.mysql.jdbc.Driver());
缺点:
1、严重依赖具体的数据库驱动
2、导致数据驱动注册2遍
方式二:(推荐)
Class.forName(“com.mysql.jdbc.Driver”);
b、获取与数据库的链接
方式一:
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/day15",
"root", "sorry");
String url:JDBC与数据库厂商的协议。具体参考数据库的文档。
Oracle:jdbc:oracle:thin:@localhost:1521:orcl 瘦客户端链接方式
jdbc:oracle:client:@localhost:1521:orcl 客户端链接方式,高效
方式二:
方式三:
Connection conn
= DriverManager.getConnection("jdbc:mysql:///day15?user=root&password=sorry");
作用:所有与数据库的交互都是基于链接的。
Statement createStatement():创建代表SQL语句的对象
作用:代表SQL语句对象
常用方法:
ResultSet executeQuery(String sql)
:执行查询,返回结果集。
int executeUpdate(String sql)
:执行DML语句。返回的是SQL语句影响到的记录条数。
boolean execute(String sql)
:执行任何的SQL语句。返回值不代表成功与否。如果执行的语句有结果集,返回true,否则返回false。
作用:封装了结果集。
数据库类型和Java类型的对应关系:
常用的方法:
boolean next():向下移动。返回有没有记录
boolean provious():向上移动。返回有没有记录
boolean absolute(int row):定位。返回有没有记录。看第2条,写2.
void beforeFirst():移动到第一条记录的前面。默认位置
void afterLast():移动到最后一条记录的后面。
1、自定义Dao运行时异常
2、利用工厂模式对业务处理层和Dao层进行解耦
3、问题:
添加或修改数据时,dao实现写的sql语句不是很方便。
执行的效率不是很高
存在SQL注入的问题
原则:能用PreparedStatement就不要使用Statement
优点:
参数使用占位符(?)替代
预编SQL语句,执行效率高
不存在SQL注入问题
ResultSet的游标