Day19
l Java数据库连接
l 是一种执行SQL语句的java API
l 可以为多种数据库提供统一访问
l 就是一组类和接口
l 是java访问数据库的规范
l 实现类由数据库厂商提供
l JDBC需要连接驱动 驱动是两个设备要进行通信 该驱动就是实现类 有数据库厂商提供
l
l 是一种规范
l 是sun公司定义的类和接口
l 接口需要实现类 由数据库厂商提供
l 驱动也是类库 实现了sun公司规定的接口
l 学习重点在sun公司的接口和类 就是驱动类的父类 有了父类就知道了所有子类的方法
l 面向接口开发
l 注册驱动
l 获取连接
l 获得语句执行平台
l 执行sql语句
l 处理结果
l 释放资源 close
这个方法是 可以将一个类加入到内存中并且创建一个本类对象 括号里写类的全名
只要next方法返回真那么就一直循环 直到返回值为假 即到了最后一行
a) 方法可参数既可以写列的编号
b) 也可以写列名
c) 推荐使用列名 因为表可能随时改变
d) 可以使用 getObject 可以获取任何类型数据
l 用户登录
l 密码和账户和数据库中相同 就登陆成功
l
l 账号和密码写死
l 密码账户有键盘录入
l 利用Preparestatement接口的实现类
l 预编译防止注入 提高效率
l 是statement的子接口
l 实现类在数据库的驱动类中
l 利用connection的方法preparestatement获取实现类
l 全部采用问号占位符 使用set方法设置
l 获取结果集不用放sql
l 修改表数据
l 查询表数据
l 服务端电脑安装mysql管理软件 并连接数据库,创建一个数据库和表
l 在客户端能够ping 服务端ip
l 设置两台电脑的IP设置在同一个网段
l 在MySQL服务器上增加新用户,
在服务器端写入代码
grant select,delete,update,insert on 数据库名.* to ‘登录数据库账户名’@’客户端ip地址’identified by ‘登录数据库密码’;
l 在客户端上可以通过用户名 :xxx 密码为 xxx 对数据库xxx 进行操作!
l 删除增加的新用户的访问权限
Mysql > Revokeselect,delete,update,insert on 数据库名.* from’账户名@’客户端ip地址’;
l 可以方便别人直接获取数据库连接对象
l 避面重复写代码
l 示例
关闭
l 示例
l 如果需要更改其他数据库连接
l 就需要用到配置文件存放驱动 url 用户名 密码
l 文件位置
l 文件名称
l 文件内容
直接写文件名访问失败 加入src 交给Bin目录没有没有src 所以不能用这种方式加载
l 使用类的加载器
l 使用jdbc代码冗余多重复多
l 为了简化开发需要使用工具类
l Apache commons项目的一个成员
l DButils
l 目录
导入jar包
l 三个核心功能
l Dbutils
l QueryRunner
l ResultSetHandler
l 经典案例转账
l
这个不能用 因为不能使用占位符来防止SQL注入
l 需要使用这个,前面写占位符,后面设置占位符
l 示例
l 就是自己写的一个普通的类 用于封装数据
l 需要实现序列化接口 将对象以流的形式写入到文件中
l 提供私有字段 private 类型 字段名
l 提供getter setter方法
l 提供无参构造器
l 结果集处理需要使用到这个类
l 表示结果集处理方式的接口
l 每一个实现类都是一种数据查询后数据结果集的处理方式
l 所有实现类实现接口重写handle方法
l 使用QueryRunder中的query方法
l 实现类
l 示例
l 结果集的第一种处理方式
l 将结果集的第一行存储到对象数组中 Object[]
l 只存储第一行
l 如果没有结果集数组长度就是0
l 结果集的第二种处理方法
l 将结果集的每一行封装到对象数组中
l 会出现很多对象数组 将数组放到集合中
l 返回值是一个List集合 集合中装的是对象数组
l
l 如果没有结果集合长度就是0
l 结果集第三种处理方法
l 将结果集第一行数据封装为javabean对象
l 构造方法传递参数 class文件的对象
l 还得加泛型<类名>
l 示例
l 没有结果集会返回null
l 封装成数据的类,必须有空参的构造 否则就会报异常
l 因为查询是封装对象调用的空参构造器 然后调用set方法设置成员变量的
l 将数据结果集的每一行数据封装成javabean对象
l 将多个javabean对象封装到list集合中
l 返回值是bean类泛型的List集合
l 构造方法参数是bean class文件的对象 泛型是bean类的名称
l 示例
l 结果集第五种处理方法
l 将结果集指定列的数据存储到List集合
l 返回值是List集合 泛型是Object
l 构造器传递 可以是编号索引 列名 泛型是Object
l 最好写列名 比较好识别
l 示例
l 如果查询语句的没有指定列 结果集此时就会异常
l 结果集第六种处理方法
l 对于查询以后只有一个结果 将其放到对象中 一行一列
l 用聚合函数查询一共有多少列数据
l 结果集的第七种处理方法
l 将结果集第一行数据封装到一个map集合中
l Map键列名 值这个列的数据
l 返回值是map集合 泛型是列名和值对应的类型
l 示例
l 结果集的第七种处理方法
l 将结果集的每一行数据存储到map集合
l Map集合过多存储到List集合
l 返回值是一个List集合
l 示例
l 减少资源占用
l 数据库连接很频繁
l 很浪费资源
l 为了解决性能问题
l 采用连接池技术 共享Connection
l 不需要每次都创建连接和释放连接
l 并发很高 效率很高
l 用池管理Connection
l 遮掩可以重复使用Connection
l 有了池 所以我们就不用自己来创建Connection
l 而是通过池来获取Connection对象
l 使用完Connection后调用Connection的close方法不会真正关闭
l 而是把连接归还给池
l 连接池技术由第三方提供
l Sun公司做了一个接口 用来规范连接池
l DataSource接口
l 这样应用程序可以方便的切换不同厂商的连接池
l 常见的连接池DBCP apache的
l 还有X3P0
l 开源的连接池
l common成员之一
l tomcat
l Jar包
l 两个jar包相互依赖
Dbcp依赖pool中的class文件
l 继承DataSource接口
l 调用set方法设置连接参数
l 调用getConnection获取连接
l 示例
l 必须项
l 扩展项
l 示例
l 测试
不需要连接对象
原文:http://www.cnblogs.com/DMYMaster/p/7353380.html