JDBC登录测试

JDBC登录测试(使用preparedStatement防止注入攻击)
        package msb.com.demo;

        import msb.com.demo.msb.com.entity.Userinfor;

        import java.sql.*;
        import java.util.Scanner;

        public class UserP {
            //一个数据库可以存放多个表,我们的表存在testtable数据库中
            public static String url = "jdbc:mysql://127.0.0.1:3306/testtable?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
            public static String user = "root";
            public static String password = "root";

            public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入账号:");
                String acc = scanner.next();
                System.out.println("请输入密码:");
                String pwd = scanner.next();
                Userinfor method = method(acc,pwd);
                System.out.println(method==null?"账号或密码错误":"登录成功");
            }

            public static Userinfor method(String usename1, String password1) {
                Connection connection = null;
                Statement statement = null;
                Userinfor userinfor =null;
                PreparedStatement preparedStatement = null;
                //通过映射加载数据库连接
                try {
                    Class.forName("com.mysql.cj.jdbc.Driver");
                    connection = DriverManager.getConnection(url,user,password);


                    //获取sql对象语句
                    /*statement = connection.createStatement();*/
                    /*String sql = "select * from userinfor where usename='"+usename1+"' and password = '"+password1+"'";*/
                    String sql = "select * from userinfor where usename=? and password = ?";

                   /* String sqlq = " usename='"+usename1+"' and password = '"+password1+"'";
                    String sqls = " usename='ab' and password = '123456'";
                    System.out.println(sqls);
                    System.out.println(sqlq);*/
                    //可以获得一个预编译语句对象PreparedStatement
                    preparedStatement = connection.prepareStatement(sql);
                    //设置两个?的索引角标位置
                    preparedStatement.setString(1,usename1);
                    preparedStatement.setString(2,password1);
                    ResultSet resultSet = preparedStatement.executeQuery();
                    while (resultSet.next()) {
                        int sid = resultSet.getInt("sid");
                        String usena = resultSet.getString("usename");
                        String passw= resultSet.getString("password");
                        userinfor = new Userinfor(sid, usena, passw);
                        /*System.out.println(userinfors);*/
                    }
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } finally {
                    if (preparedStatement != null) {
                        try {
                            preparedStatement.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                    if (connection != null) {
                        try {
                            connection.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }
                return userinfor;
            }
        }

实体类的创建(entity)
        package msb.com.demo.msb.com.entity;

        import java.io.Serializable;
        //一定要进行序列化操作
        public class Userinfor implements Serializable {
            private Integer sid;
            private String usename;
            private String password;

            public Userinfor() {
            }

            public Userinfor(Integer sid, String usename, String password) {
                this.sid = sid;
                this.usename = usename;
                this.password = password;
            }

            @Override
            public String toString() {
                return "userinfor{" +
                        "sid=" + sid +
                        ", usename='" + usename + '\'' +
                        ", password='" + password + '\'' +
                        '}';
            }

            public Integer getSid() {
                return sid;
            }

            public void setSid(Integer sid) {
                this.sid = sid;
            }

            public String getUsename() {
                return usename;
            }

            public void setUsename(String usename) {
                this.usename = usename;
            }

            public String getPassword() {
                return password;
            }

            public void setPassword(String password) {
                this.password = password;
            }
        }

posted @ 2022-05-06 19:05  爱豆技术部  阅读(57)  评论(0)    收藏  举报