MySQL(七)JDBC编程
一、驱动包
1.性质
1.1底层差异性
应用程序 都是用代码 写出来的,++不同的应用程序,其设计时的编程模范 会不同++ ,所以 为编程语言 代码操作使用层 设计给的驱动包里 类与接口的范式 也就会随着 对应上底层程序的代码 而不同
1.2JDBC接口统一性
在数据库应用程序里,++Java规定了 必须以Java设计的 数据库编程接口JDBC 来操作使用数据库++ ,所以各数据库厂商 就多设计了 底层接口 等效形式转化成 JDBC接口的 驱动程序,使得Java 用JDBC统一了 所有数据库的API接口
2.导入
任何应用程序的 编程层操作使用,都需要++将 应用程序设计好的 实现使用功能的 类与接口 通过驱动包导入 进编程项目 中 作为第三方库使用++
2.1复制导包
将驱动包 复制导入 要作为第三方库的 目录里

所有的.java文件 加载成 许多.class文件,所有的.class文件 整理打包好 到一个.jar压缩包文件 进行程序发布的
2.2标记作库
将驱动包所处的目录 标记成 第三方库

二、JDBC编程
1.寻找资源
javaDataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl(String_URL);
mysql数据源 通过URL网址 找到mysql服务器 所在网络上的 具体资源位置
1.1URL
"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"
1.1.1网址作用
jdbc:mysql 表明该网址 是用来给 jdbc程序操作mysql 使用的
1.1.2主机IP
127.0.0.1 是jdbc要操作的 mysql服务器的 所处主机的 网络IP地址,当jdbc应用程序 本身所处的主机 就同是mysql服务器所处的 同台主机时,使用127.0.0.1环回IP 指向应用程序自己所处的主机 即就指向了 mysql服务器主机的位置
1.1.3端口号
一台主机上 有许多的应用程序 都要操作网络,3306 是mysql与网络对接的 端口号
1.1.4数据库名
确定jdbc 要操作mysql服务器里的 哪个数据库
1.1.5访问资源参数
以 键对应填值 的形式填写参数,键值对之间 用**&**分隔
characterEncoding=utf8 --- 以utf8字符集 进行数据库与应用程序的 数据传输
useSSL=false --- 数据库与应用程序之间的网络通信 中间是否要加密
2.访问认证
2.1身份
((MysqlDataSource)dataSource).setUser(String_Ident);
mysql数据源 确定jdbc 访问数据库的身份,root 是mysql默认自带有的用户(管理员)
2.2密码
((MysqlDataSource)dataSource).setPassword(String_Passworld);
mysql数据源 确定jdbc 访问数据库的密码
3.连接通道
dataSource.getConnection();
---> return Connection
数据源 寻找并成功访问上之后,数据源 向jdbc 建立连接通道,后续在通道中进行 请求-响应 的交互
4.数据传输
4.1创建传输包
connection.prepareStatement(String_sql);
---> return PreparedStatement
在连接通道中 创建传输包,将要发送的 sql语句字符串 存储在传输包中,传输包 会进行sql语句的 预处理解析、检查 并把解析的结构化数据打包,++在应用程序这边 完成++解析检查这部分的工作,减少了mysql服务器的 开销负担
4.1.1创建sql
4.1.1.1+拼接变量
java
String sql = "insert into student values("+id+",' "+name+" ')";
变量 可直接**+拼接进sql语句字符串,但这样会使得 可以通过在sql语句中 对变量输入非法内容 实现对数据库的攻击**,不安全
4.1.1.2?替换变量
javaString sql = "insert into student values(?,?)"; connection.prepareStatement(sql);
preparedStatement.setDatatype(下标,变量);
使用占位符? 先替入 后规范换 的方式 可将变量安全替换进 sql字符串中,占位符的下标是从1开始的
4.2发送传输包
4.2.1发送写sql
preparedStatement.executeUpdate();
---> return int
传输包 以写的形式 将自己发送到数据库服务器 执行,返回数据库中 影响到的行数
4.2.2发送读sql
preparedStatement.executeQuery();
---> return ResultSet
传输包 以读的形式 将自己发送到数据库服务器 执行,返回 查询结果临时表的 结果集合
4.2.2.1遍历记录
javawhile (resultSet.next()) { }
resultSet.next();
---> return boolean
从临时表的 第0个记录开始,往后 保存光标位置遍历 取得一个记录,遍历到表尾空时 返回false
4.2.2.2读取记录
result.getDatatype("col_name");
---> return Datatype
获取 遍历所处记录的 指定字段数据
5.回收资源
按 后获取到的资源先释放 的顺序 回收资源
5.1销毁结果集合
resultSet.close();
5.2销毁传输包
preparedStatement.close();
5.3销毁通道
connection.close();