1. JDBC JDBC: java database connectivity java 与数据库的连接 2. 角色分类 服务器 (db) 接收 sql 接口名称 作用 java.sql.Connection 连接 java.sql.Statement 静态处理块 java.sql.PreparedStatement 预处理块 java.sql.ResultSet 结果集 java.sql.ResultSetMetaData 结果集元信息 类比送快递 JDBC步骤 1、选择快递公司 加载驱动(完整路径) 2、与快递公司建立联系(电话号 码 唯一信息) 建立连接(url 用户名 密码) 3、快递员 收包裹 创建处理块 Statement PreparedStatement 4、打包 投递 执行: execute(ddl) int executeUpdate(dml) ResultSet executeQuery(select) 5、签收 分析结果 :ddl -->没有异常 dml--->>0 select-->分析结果集 6、打发走人 释放资源 执行 sql 返回结果 客户端 (java) 接收数据 组装sql 发送SQL(与数据库建立联系) 分析结果 3. 面向接口编程 1、java 制定标准 ,不同的数据库厂商实现 接口即可。java 中提供的接口 java.sql.* 包下,常用接口如 下 2、oracle 厂商实现接口 (jar) F:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar 视安装路径而定 4. jdbc步骤 核心为拼接SQL、分析结果、操作结果 5. 连接 5.1. 准备工作 引入驱动包 构建路径 build path 测试用户是否正确登录 5.2. 建立连接 5.2.1. 连接字符串 驱动: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@db 服务器地址:端口:实例 连接 url->jdbc:oracle:thin:@localhost:1521:XE 用户名: SCOTT 密码: TIGER 5.2.2. 编写测试类 加载驱动 硬编码: new oracle.jdbc.driver.OracleDriver(); 软编码: class.forName("oracle.jdbc.driver.OracleDriver") 建立连接 6. 处理块 6.1. 静态处理块Statement Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发 送要执行的 SQL 语句。Statement 对象,用于执行不带参数的简单 SQL 语句。 执行静态 SQL 语句并返回它所生成结果的对象。 7.1.1. 创建 : 连接.Connection.createStatement() Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","SCOTT ","TIGER"); 7.1.2. 执行 : ddl -->execute(dd语句) -- 通常不会在代码中执行 dml -->executeUpdate(dml语句) select -->executeQuery(select) 7.1.3. 特点 : 处理 不变的静态的 sql 语句 优点: 直接查看sql ,方便处理错误 缺点:性能不高 拼接 sql 麻烦 可能存在 sql 注入 7.2. 预处理块 PreparedStatement PreparedStatement 接口继承了 Statement,并与之在两方面有所不同:有人主张,在 JDBC 应用中, 如果你已经是稍有水平开发者,你就应该始终以 PreparedStatement 代替 Statement.也就是说,在任 何时候都不要使用 Statement。 优点: 1. 由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement对象。因此,多次 执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。 2. 防止SQL注入问题 7.2.1. 创建: 创建:连接.prepareStatement(sql) 7.2.2. 执行: 存在? ,先填充参数再执行 ddl -->execute() dml -->executeUpdate() select -->executeQuery() 7.2.3. 特点: 处理 不变的静态的 sql 语句 |可变的 sql 语句 带 ? 的 sql 优点:性能高,方便编写sql 不存在sql注入 安全 缺点:不能直接打印sql语句 不方便处理错误 8. 分析 执行完SQL 语句后可能成功也可能失败,如果成功,有数据则我们很大一部分情况是需要获取查询的结 果。数据就是一切 ?ddl:没有异常就是成功 dml: 结果>0就是成功 select:分析结果集 对于 select 的结果集进行分析,类似于迭代器, 先判断(移动)再获取 next() getXxx(索引|列名|别名) 9. 释放资源 释放资源的原则是 先打开的后关闭, 则我们的顺序一般为: 结果集->处理块->连接
|