欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > jdbc学习——SQL注入

jdbc学习——SQL注入

2025/6/20 14:29:48 来源:https://blog.csdn.net/2301_80412275/article/details/144004995  浏览:    关键词:jdbc学习——SQL注入

SQL注入介绍

  • SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。

用户登录的本质:执行下面的sql语句

select * from tb_user where username = 'zhangsan' and password = '123';

发生sql注入的本质 

 解决SQL注入的方法(PreparedStatement预编译SQL

PreparedStatement作用:  预编译SQL并执行SQL语句  
① 获取 PreparedStatement 对象  

// SQL语句中的参数值,使用?占位符替代  
String sql = "select * from user where username = ? and password = ?";  
// 通过Connection对象获得,并传入对应的sql语句  
PreparedStatement pstmt = conn.prepareStatement(sql);  

② 设置参数值  
PreparedStatement对象:setXxx(参数1, 参数2):给?赋值(如果是增删改语句也是通过?来赋值)  
Xxx:数据类型;如setInt(参数1, 参数2)  
参数:  

  •   参数1:?的位置编号,从1开始  
  •   参数2:?的值  

③ 执行SQL  

executeUpdate();

如果是INSERT、UPDATE或DELETE语句则executeQuery();它返回一个整数,表示执行的行数;不管是那种都不需要再传递sql 

        //1. 注册驱动Class.forName("com.mysql.jdbc.Driver");//2. 获取连接String url = "jdbc:mysql:///dqlsearch?useSSL=false";String username = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, username, password);// 要查询的具体数据String math_score = "72";String chinese_score = "70";// 定义sqlString sql = "select * from studentscore where chinese_score = ? and math_score = ?";// 获取pstmt对象,同时进行预编译PreparedStatement pstmt = conn.prepareStatement(sql);// 设置?的值pstmt.setString(1, chinese_score);pstmt.setString(2, math_score);// 执行sqlResultSet rs = pstmt.executeQuery();if(rs.next()){System.out.println("找到了");}else{System.out.println("没找到");}// 释放资源rs.close();pstmt.close();conn.close();

数据库连接池简介

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;
  • 释放空间时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接资源浪费

好处:

  • 资源重用
  • 提升系统响应速度
  • 避免数据库连接资源浪费

Driud使用步骤

  1. 导入jar包druid-1.1.12.jar
  2. 定义配置文件
  3. 加载配置文件
  4. 获取数据库连接池对象
  5. 获取连接

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词