* Connection 对象
* 主要作用: 打开与数据源的连接
* 用法:使用 connection 对象的 集合, 方法 和 属性可以做以下操作--》
* ① 通过 connection String, connection Timeout, Mode 对连接属性进行配置
* ② 设置 CursorLocation 属性——》调用支持批更新的“客户端游标提供者”
* ③ DefaultDatabase 属性 ——》 设置连接的默认数据库
* ④ lsolationLevel 属性 ——》 为在连接上打开的事务设置隔离级别
* ⑤ Provider 属性 ——》 指定 OLE DB 提供者
* ⑥ Open 方法 ——》 建立到数据源的物理连接
* ⑦ Close 方法 ——》 断开连接
* ⑧ Execute 方法 ——》 执行对连接的命令,并使用 CommandTimeout 属性 对执行 进行配置
* ⑨ BeginTrans, CommitTrans 和 RoolbackTrans方法,Attributes属性 ——》
* 管理打开的连接上的事务(如果提供者支持则包括嵌套的事务)
* ⑩ Errors 集合 ——》 检查数据源 返回的错误
* ⑩①Version属性 ——》 读取使用中的 ADO 执行版本
* ⑩②OpenSchema方法 ——》 获取数据库模式信息
* 注意:如果 不使用 Command 对象进行查询:
* 需向 Connection 对象的 Execute 方法传送查询字符串,
* 但是当需要使 命令文本 具有持久性并重新执行,或使用 查询参数的时候
* 则必须使用 Command 对象
* 如果 要执行命令:
* 可以使用 Command 对象的 Name 属性 给命令 指定一个名称,将 Command
* 对象的 ActiveConnection 属性 设置为该连接
* 然后 像发出 Connecton对象的方法一样发出使用命令名称的语句,
* 后面可带任何参数(如果有返回行则后面带 Recordset 对象),
* 设置 Recordset 属性,以便自定义所产生的记录集
*
* Statement 对象
* 作用: 用于将 SQL 语句发送到数据库中
* Statement 对象有三种:
* Statement:
* 作用:用于执行不带参数简单 SQL 语句
* 特点:每次执行 SQL 语句,数据库都要执行 SQL 语句的编译,最好用于仅执行一次查询并返回结果的情形,
* 效率高于 PreparedStatement
* PreparedStatement:
* 作用:用于执行带 或 不带 IN参数 的预编译 SQL 语句
* 特点:① 是预编译的, 在执行可变参数的一条 SQL 语句时,比 Statement 的效率高,
* 因为 DBMS 预编译一条 SQL,当然会比多次编译一条 SQL 的效率要高
* ② 安全性好,有效防止 SQL 注入等问题
* ③ 对于多次重复执行的语句,效率会更高一点,并且这种情况下也比较适合使用 batch
* ④ 代码的可读性和可维护性好
* CallableStatement:
* 作用:用于执行对数据库存储过程 的调用
* 特点:提供了对输出和输入参数的支持
* 此接口具有对 PreparedStatment 接口提供的输入输出参数的支持
* 用法:
* 建立了 到特定数据库的连接 后, 就可用该连接发送 SQL 语句,
* Statement 对象 用 Conection 的 createStatement 方法创建 ,如下 :
*
<span style="white-space:pre"></span>Connection con = DriverManager.getConnection("url", "user", "password");
<span style="white-space:pre"></span>Statement stmt = con.createStatement();
*
* 为了执行 Statement 对象,被发送到数据库的 SQL 语句将被做为参数提供给 Statement 的方法:
*
<span style="white-space:pre"></span>ResultSet rs = stmt.executeQuery("SELECT a,b,c FROMTable2");
*
* 使用 Statement 对象执行 SQL 语句
* Statement 接口提供了三种执行 SQL 语句的方法:executeQuery, executeUpdate, execute
* 此处使用哪个方法由 SQL 语句所产生的内容决定
*
* executeQuery 方法 --》用于产生单个结果集的语句
* 如: SELECT 语句
*
* executeUpdate 方法 --》 用于执行 INSERT, UPDATE,DELETE, SQLDDL(数据定义语言)语句
* 如:CREATE TABLE, DROP TABLE
* install, update,delete 语句 ——》 修改表中0 行或多行中是一列或多列
* executeUpdate 的返回值 为整数,指示受影响的行数(更新计数)
* create table 或 drop table 等不操作行的语句, executeUpdate 的返回值总为 0
*
* execute 方法 ——》 用于执行返回多个结果集,多个更新计数或二者组合的语句(不常用)
*
* 执行语句的所有方法都将关闭所调用的 Statement 对象的当前打开结果集(如果存在)
* 即 在重新执行 Statement 对象前, 需要完成对当前 ResultSet 对象的处理
*
* 继承了 Statement 接口中所有方法的 PreparedStatement 接口都有自己的
* executeQuery, executeUpdate, execute 方法
*
* Statement 对象 本身不包含 SQL 语句,因此,必须给 Statement.execute 方法提供 SQL 语句作为参数
* PreparedStatement 对象并不将 SQL 语句作为参数提供给这些方法,因为它们已经包含了预编译 SQL 语句
* CallableStatement 对象继承这些方法的 PreparedStatement 形式