JavaSE.20190517.数据库(四)JDBC.角色分类.面向接口编程.JDBC步骤.连接.处理块.分析.释放资源.
★数据库★
一、设计表
设计表首先应该按需遵循三范式
1.确定表名 2.确定字段名 类型 +约束(主键 外键 非空 默 检查认 唯一)
主键: 唯一标识一条记录(唯一并且非空)
唯一: 唯一
非空:不能为空
默认: 当没给值时使用给定一个默认值
外键:参考其他表(自己)的某个(某些)字段
检查:自定义的规则
二、创建表
表名必须唯一,如果存在 ,必须删除
1、创建表(不加约束)
1)、创建新表
2)、已有表中拷贝结构
3)、删除表
2、创建表(同时创建约束+默认名称)
这种在创建表的同时创建约束并使用默认约束名称的方式,后期不方便排错, 所以不推荐使用。其主要的优点是简单。
3、创建表(同时创建约束+指定名称)
创建表的同时创建约束并指定约束的名称,后期方便排错,推荐使用
4、创建表(追加创建约束+指定名称)
推荐, 便于后期排错
二、约束(了解)
在oracle中所有的一切都是对象, 约束也是一个个的对象,除了能创建约束我们还能对约束进行一些其他的操作
1、查看某个用户的约束
2、查看表的约束
3、查看 字段名+约束
4、约束的禁用与启用
5、删除约束
6、修改约束
三、表的其他操作
1、修改表结构
2、删除表
1、先删除从表 再删除主表
2、删除表的同时删除约束
3、截断数据
truncate: 截断所有的数据 ,如果截断的是主表,结构不能存在 外键关联
截断数据同时 从结构上 检查
四、序列
使用工具|程序管理流水号,序列在创建时 没有与表关联 ,在操作数据时 与表关联
1、创建
2、使用
3、删除
★JDBC★
jdbc: java database connectivity java与数据库的连接
一.角色分类
1.服务器(db):a)、接收sql b)、执行sql c)、返回结果
2.客户端 (java):a)、接收数据 b)、组装sql c)、发送SQL(与数据库建立联系) d)、分析结果
二.面向接口编程
1.java 制定标准 ,不同的数据库厂商实现 接口即可。java 中提供的接口 java.sql.*包下,常用接口如下
2.oracle厂商实现接口 (jar)
F:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar 视安装路径而定
三.JDBC步骤
四.连接
1.准备工作
1)引入驱动包
2)构建路径 build path
3) 测试用户是否正确登录
2.建立连接
1)连接字符串
驱动: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@db服务器地址:端口:实例
连接url→jdbc:oracle:thin:@localhost:1521:orcl
用户名与密码: scott tiger
2)编写测试类
加载驱动
a)硬编码: new oracle.jdbc.driver.OracleDriver();
b)软编码: class.forName("oracle.jdbc.driver.OracleDriver")
建立连接
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@locahost:1521:orcl","scott","tiger")
五.处理块
1.静态处理块Statement
Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语 句。Statement对象,用于执行不带参数的简单SQL语句。 执行静态 SQL 语句并返回它所生成结果的对象。
1)创建 : 连接.Connection.createStatement()
2)执行 :
ddl -->execute(dd语句) -- 通常不会在代码中执行
dml -->executeUpdate(dml语句)
select -->executeQuery(select)
3)特点:处理 不变的静态的sql语句
优点: 直接查看sql ,方便处理错误
缺点:性能不高 拼接sql麻烦 可能存在sql注入
2.预处理块 PreparedStatement PreparedStatement 接口继承了Statement,并与之在两方面有所不同:有人主张,在JDBC 应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不 要使用Statement。 由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行 的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。
1)创建:创建:连接.prepareStatement(sql)
2)执行:
存在? ,先填充参数再执行
ddl -->execute()
dml -->executeUpdate()
select -->executeQuery()
3)特点 :处理 不变的静态的sql语句 |可变的sql语句 带 ? 的sql
优点:性能高,方便编写sql 不存在sql注入 安全
缺点:不能直接打印sql语句 不方便处理错误
六.分析
执行完SQL语句后可能成功也可能失败,如果成功,有数据则我们很大一部分情况是需要获取查询的结果。数据就是一切
ddl:没有异常就是成功
dml: 结果>0就是成功
select:分析结果集
对于select的结果集进行分析,类似于迭代器, 先判断(移动)再获取
next()
getXxx(索引|列名|别名)
七.释放资源
释放资源的原则是 先打开的后关闭, 则我们的顺序一般为: 结果集->处理块->连接