时间:2021-07-01 10:21:17 帮助过:11人阅读
PreparedStatement
对象中。 然后可以使用该对象多次有效地执行此语句。
import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; /* SQL 注入攻击 */ public class Demo02 { public static void main(String[] args) { try{ Statement statement=JDBCUtil.getConnection().createStatement(); // selectAll(statement); select(); }catch(SQLException s){ s.printStackTrace(); } } /** * 使用 。。登录数据库 zeng 1 ‘ or ‘1=1 * @param statement */ public static void selectAll(Statement statement){ Scanner scanner=new Scanner(System.in); String username=scanner.nextLine(); String pwd=scanner.nextLine(); String sql="select*from user where username=‘"+username+"‘ and pwd=‘"+pwd+"‘;"; try { boolean b=statement.execute(sql); System.out.println(b); ResultSet resultSet=statement.executeQuery(sql); while (resultSet.next()){ System.out.println(resultSet.getString("username")+"\t"+resultSet.getString("pwd")); } scanner.close(); resultSet.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } } /** * 创建一个PreparedStatement对象,用于将参数化的SQL语句发送到数据库。 * SQL语句可以预编译并存储在PreparedStatement对象中 * 防止注入攻击 */ public static void select(){ Scanner scanner=new Scanner(System.in); String username=scanner.nextLine(); String pwd=scanner.nextLine(); String sql="select*from user where username= ? and pwd= ?"; try { PreparedStatement preparedStatement=JDBCUtil.getConnection().prepareStatement(sql); //使用给定对象设置指定参数的值。 preparedStatement.setObject(1,username); preparedStatement.setObject(2,pwd); //执行此 PreparedStatement对象中的SQL查询,并返回查询 PreparedStatement的 ResultSet对象。 ResultSet resultSet=preparedStatement.executeQuery(); while (resultSet.next()){ System.out.println(resultSet.getString("username")+"\t"+resultSet.getString("pwd")); } scanner.close(); resultSet.close(); preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } }
基本就这样子。
java连接mysql演示SQL注入攻击
标签:stack jdbc time 对象 语句 连接数据库 sql数据库 except statement