JDBC 接口总结(IDEA版本)

一、关于SQL注入问题

问题代码

Connection conn = null;
Statement stat = null;
ResultSet rs = null;

// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
String url = "jdbc:mysql://localhost:3306/数据库名";
String user = "用户";
String pwd = "密码";
conn = DriverManager.getConnection(url, user,pwd);
// 获取数据库操作对象
stat = conn.createStatement();
//执行sql语句
String sql = "select * from t_user where user = '"+userName+"' and pwd = '"+passwd+"'";
rs = stat.executeQuery(sql);
// 处理结果集
if (rs.next()){
    return true;
}

问题:

userName = sasas
passwd = sa' or '1' = '1
那么就会出现sql注入现象
语句就会成这样
String sql = "select * from t_user where user = 'sasas' and pwd = 'sa' or '1' = '1'";
那么select语句就会执行成功

怎么解决SQL注入现象?

解决sql注入问题
    使用:PreparedStatement(预编译数据库操作对象)
    原理:预先对sql语句的框架进行编译,再给sql语句传值

解决代码

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值