浅析Statement类SQL注入问题
Statement接口是java.sql包下的一个接口,是官方提供的用来操作数据库的标准接口之一。接口的实现一般在数据库驱动中。因为所有的与数据库之间的交互都是基于连接对象的,所以它也是由连接对象获取返回的。返回的Statement类对象可以理解为是Java执行SQL语句的对象。
简单使用(以MySQL数据库为例)
//获得连接
Connection connection = DriverManager.getConnection(url, user, password);
//创建执行sql语句对象
Statement statement = connection.createStatement();
//执行sql,处理结果
String sql = “select * from user”;
//返回结果集对象
ResultSet resultSet = statement.executeQuery(sql);
SQL注入问题
什么是SQL注入问题?我们在编写SQL语句的时候不可能是所有的条件都确定的。比如说用户登录的时候,账户和密码都是手动在用户层传入进来,而处在数据访问层的数据库交互代码是无法提前预知其信息的。因此。在编写SQL语句实现某个功能的时候,就不得不采用参数变量占位的方式来处理。
以下方简单的一个登录功能为例
private static void login(String username, String password) {
Connection con=null;
Statement st=null;
ResultSet rs&