占位符的使用

    xiaoxiao2024-11-29  68

    占位符的使用

    Statement接口操作数据存在的问题问题一问题二 PrepareStatement接口改善问题占位符代码演示密码登录DEMO

    Statement接口操作数据存在的问题

    问题一

    使用Statement接口对象发送的sql语句需要在数据库中进行一次编译之后成为指令才能执行,每条sql语句都需要编译一次,这样是很慢的。

    问题二

    使用Statement接口才做的sql可以需要使用字符串拼接的方式实现,这样的方式可能存在sql注入的安全风险并且拼接字符串比较麻烦的。

    PrepareStatement接口改善问题

    使用PrepareStatement接口操作的sql语句会先预编译成指令再发送给数据库,数据库就执行指令即可,这样就提高了一定速度。而且使用该接口可以避开sql需要使用字符串拼接的方式,从而没有了sql注入的安全风险,而是使用占位符(?)来替代原来的字符串拼接。

    占位符代码演示

    密码登录DEMO

    public class SelectLogin { public static void main(String[] args) throws Exception{ } public static void selectLogin(String name,String pwd) throws Exception { Connection conn=ConnectionUtil.getConnection(); String sql="SELECT*FROM myuser WHERE username=? AND password=?"; PreparedStatement pst=conn.prepareStatement(sql); // 为占位符赋值 pst.setString(1, name); pst.setString(2, pwd); ResultSet rst=pst.executeQuery(); if (rst.next()) { System.out.println("欢迎光临"); } else { System.out.println("用户名密码不正确"); } } }

    使用占位符的好处:

    避开sql语句的注入风险会为字符串自动增加上单引号
    最新回复(0)