0
点赞
收藏
分享

微信扫一扫

JDBC练习 —— 查询数据封装成对象返回&简单的登录demo

树下的老石头 2022-02-12 阅读 113

目录

1、封装数据返回

1.1、编写实体类 Person

1.2、编写jdbc代码

2、简单登录逻辑



1、封装数据返回

1.1、编写实体类 Person

package com.zhou.exercise;


public class Person {
    private int id;
    private String name;
    private String email;
    private String addr;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

1.2、编写jdbc代码

package com.zhou.exercise;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;


public class JDBC_queryForObj {
    public static void main(String[] args) {
        // 调用方法
        List<Person> personList = findAll();

        // 遍历集合
        for (Person person : personList) {
            System.out.println(person);
        }

    }

    // 定义一个查询数据的方法
    public static List<Person> findAll() {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        // 定义装载Person的集合
        List<Person> list = new ArrayList<Person>();

        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql:///day10", "root", "123456");
            String sql = "select * from person";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();

            while (rs.next()) {
                Person person = new Person(); // 将person提到外面
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String email = rs.getString(3);
                String addr = rs.getString(4);
                person.setId(id);
                person.setName(name);
                person.setEmail(email);
                person.setAddr(addr);
                list.add(person);

            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
        // 返回list
        return list;
    }
}


2、简单登录逻辑

package com.zhou.exercise;

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

public class JDBC_login {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = scanner.next();
        System.out.println("请输入密码:");
        String password = scanner.next();

        // 调用方法 判断
        boolean login = login(username, password);
        if (login){
            System.out.println("登录成功!");
        }else {
            System.out.println("登陆失败!");
        }


    }

    // 定义一个查询数据的方法
    public static boolean login(String username, String password) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        // 定义装载Person的集合
        List<Person> list = new ArrayList<Person>();

        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql:///day10", "root", "123456");
            String sql = "select * from user where username = ? and password = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, username);
            pstmt.setString(2, password);
            rs = pstmt.executeQuery();

            // rs.next的返回值是一个布尔值 正好是我们所需要的 true:表示当前行不是最后一行 有数据 false 表示当前行是最后一行 没有数据了
            // 表示查询的数据不是空 证明根据username和password可以查到相关记录
            return rs.next();

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
       return false; // 如果try里面的返回了 那么改代码不会执行
    }
}


 

举报

相关推荐

0 条评论