SQL 注入问题

注入测试不全(下面测试同理),有空回去看

package com.kuang.lesson02;

import com.kuang.lesson02.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SQL注入 {
    public static void main(String[] args) {
       // login("kuangsheng","123456");
        login("'or' 1=1","123456");

    }
    public static void login(String username, String password){
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;

        try {
            conn = JdbcUtils.getConnection();
            st= conn.createStatement();

            // SQL
            String sql="select * from users where `NAME`='"+username+"' AND `password`='"+password+"'";
            rs= st.executeQuery(sql);
            if(rs.next()){
                System.out.println(rs.getObject("NAME"));
                System.out.println(rs.getObject("password"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            JdbcUtils.release(conn,st,rs);
        }
    }

}

preparedstatement对象

增 删 改

  Connection conn=null;
        PreparedStatement st=null;

        try {
           conn = JdbcUtils.getConnection();
           // 区别
            // 使用?占位符代替参数
           String sql="INSERT INTO users(`id`, `NAME`,`PASSWORD`,`email`,`birthday`)values(?,?,?,?,?)";
            st = conn.prepareStatement(sql); // 预编译SQL 先写sql , 然后不执行
            st.setInt(1,4); // id 赋值
            st.setString(2,"qinjiang");
            st.setString(3,"1232112");
            st.setString(4,"24734673@qq.com");

            // 注意点 sql.Date   数据库
          //   util.Date java  new Date().getTime() 获得时间戳
            st.setDate(5,new java.sql.Date(new Date().getTime()));
            // 执行
            int i = st.executeUpdate();
            if(i>0){
                System.out.println("插入成功");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.release(conn,st,null);
        }
    }
package com.kuang.lesson03;

import com.kuang.lesson02.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;

public class TestDelete {
    public static void main(String[] args) {
        Connection conn=null;
        PreparedStatement st=null;

        try {
            conn = JdbcUtils.getConnection();
            // 区别
            // 使用?占位符代替参数
            String sql="delete from users where id=?";
            st = conn.prepareStatement(sql); // 预编译SQL 先写sql , 然后不执行


            // 注意点 sql.Date   数据库
            //   util.Date java  new Date().getTime() 获得时间戳
            st.setInt(1,4);
            // 执行
            int i = st.executeUpdate();
            if(i>0){
                System.out.println("删除成功");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.release(conn,st,null);
        }

    }
}

package com.kuang.lesson03;

import com.kuang.lesson02.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;

public class TestUpdate {
    public static void main(String[] args) {
        Connection conn=null;
        PreparedStatement st=null;

        try {
            conn = JdbcUtils.getConnection();
            // 区别
            // 使用?占位符代替参数
            String sql="update users set NAME =?  where id=?";
            st = conn.prepareStatement(sql); // 预编译SQL 先写sql , 然后不执行

            // 手动给参数赋值
            st.setString(1,"狂神");
            st.setInt(2,1);
            // 执行
            int i = st.executeUpdate();
            if(i>0){
                System.out.println("更新成功");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.release(conn,st,null);
        }
    }
    }

package com.kuang.lesson03;

import com.kuang.lesson02.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestSelect {
    public static void main(String[] args) {
        Connection conn=null;
        PreparedStatement st=null;
        ResultSet rs=null;
        try {
            conn = JdbcUtils.getConnection();
            String sql="select * from users where id=?";  //编写sql
            st= conn.prepareStatement(sql);               // 预编译
            st.setInt(1,2);            // 传递参数
            rs = st.executeQuery();// 执行
            if(rs.next()){
                System.out.println(rs.getString("NAME"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

posted @ 2022-06-29 14:47  天井听雨  阅读(28)  评论(0编辑  收藏  举报