JDBC六大步骤及其他

JDBC

一 前期准备阶段

以下是在IDEA中实现
File----Project Structure—Modules模块下的Dependencies,点击+,选择第一个,之后就将下好的用于连接Jar包,显示以下代表成功在这里插入图片描述
假设不行,可以新建一个项目再试
以下给出需要的jar包
链接:https://pan.baidu.com/s/1Sfznzx_YcaMvr7YymOIcLA
提取码:qwu6

二 六大步骤

不涉及异常的处理

1 注册驱动
  1. 第一种方法Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver)
    这里可以合并:DriverManager.registerDriver(new com.mydql.jdbc.Driver);
  2. 采用反射机制 :Class.forName("com.mysql.jdbc.Driver");
2 获取连接
  1. 第一种方式
// String url =  "jdbc:mysql://localhost:3306/mysql2",低版本的mysql用这个就行
String url = "jdbc:mysql://localhost:3306/mysql2?useUnicode=true&characterEncoding=utf-8&useSSL=false";//mysql8.0以上版本的会警告关于ssl的,我们可以设置一下
String user = "用户名";
String password = "密码";
Connection con = DriverManager.getConnection(url,user,password);

  1. 第二种方式: 使用资源绑定器绑定属性配置文件,这种方法更加便捷,动态获取属性,不必修改java代码

用文本编辑器将属性写入: jdbc.txt文件在这里插入图片描述写完将后缀改为“ .properties ”文件,建议文件路径最好一致

ResouceBundle rb = ResouceBundle.getBundle("jdbc");
String driver = rb.getString("driver");
String url = rb.getString("url");
String user = rb.getString("user");
String password = rb.getString("password");
3 获取操作数据库对象
Stmtment stmtment = con.createStmtment();//这个存在SQL注入风险
PreparedStmtment ps = con.prepareStmtment(...);//可以预防SQL注入 ,后面会讲
4 执行SQL语句
String sql = "select * from dfh";
..........
rs = tmtment.executeUpdate(sql)//专门执行DML语句
rs = stmtment.executeQuery(sql)//专门执行DQL语句
5 处理查询结果集
取元素
while(rs.next()){
........
}
6 关闭资源
  1. 保证资源的释放
  2. 遵循从小到大一次关闭
  3. 异常处理
三 如何解决SQL注入问题

先来看看Stmtment 与 PrepareStmtment的区别

  1. 前者存在SQL注入,后者可以预防SQL注入
  2. 前者是编译一次执行一次,后者是编译一次,执行N次
  3. 遇到字符串拼接的时候一定要用Stmtment, 后者编译阶段会做安全检查
  4. Stmtment的相关代码:
//执行SQL语句
String sql = "select * from hehe where no = 123";
stmtment.executeUpdate(sql);

根据Java自上而下的执行顺序,可以看出,带着sql语句在进行编译,如若sql语句发生恶意改动,就会带入一同编译,扭曲原sql语句的含义
PrepareStmtment的原理是:对sql语句的框架进行预编译,之后再传值。?表示占位符

String sql = "select * from hehe where no = ? ";
PrepareStmtment ps = con.prepareStmtment(sql)//预编译,此时还没传值
ps.setInt(1,233);//传值
ps.setDounle(2,20.2);//传值
四 有关于事务

jdbc是自动提交事务
我们可以手动修改机制
再获取数据库连接对象之后

con.setAutoCommit(false);//开启事务
.......
con.commit();//手动提交
//在异常语句中可以添加事务回滚:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值