中软国际day2

JDBC(Java Data Base Connectivity)

JDBC实际上起到的是一个桥梁的作用,它使得原本没有关系的Java和Mysql连接起来。
在IDEA创建Java Web Application项目后需要将包导入项目中
在这里插入图片描述
中软国际day2_第1张图片
然后使用JDBC进行数据库的连接。
(需要注意的是,无论用什么语言去开发,做事之前都需要有数据库的支持)
下面展示的是JDBC数据库连接并对表单进行遍历

public class TestUser {
    // 测试增加
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;

        try {
            // 1. 获取驱动 ,万能键  Alt + enter
            // 自动补全返回值: Ctrl + Alt + V
            Class.forName("com.mysql.jdbc.Driver");
            // 2. 创建连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8" +
                    "&user=root&password=123");
            System.out.println("数据库连接成功" + conn);
            // 3. 编写sql, 注释的快捷键:Ctrl + /
//            String sql = "insert into tb_user(username,password) values(?,?)";
            String sql = "select * from tb_user";
            // 4. 获取存放sql的对象
            pstm = conn.prepareStatement(sql);
            // 5. 去执行SQL语句 并得到结果
            // executeUpdate: 给我们返回的是int类型的值(增删改), executeQuery: 给我们返回的是结果集(查询);
//            int i = pstm.executeUpdate();
            rs = pstm.executeQuery();
            // 6. 遍历结果
            while (rs.next()){
                System.out.println("用户ID:"+rs.getInt(1));
                System.out.println("用户名:"+rs.getString(2));
                System.out.println("用户密码:"+rs.getString(3));

            }
        } catch (Exception e) {

        } finally {
            if(rs !=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            } else if(pstm !=null){
                try {
                    pstm.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }else if(conn != null){
                try {
                    conn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }    

通过上例,会发现建立连接的代码都在方法内,这样的话相当于每进行一个类方法的操作时,都需要重新写这段连接的的代码。

Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8" + 			"&user=root&password=123456");

因此,我们就引出了封装的概念

public class DBUtil {
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8";
    private static String user = "root";
    private static String password = "123";

    //获取驱动
    static{
        try {
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //创建连接
    public static Connection get_Conn() throws SQLException {
        Connection conn = DriverManager.getConnection(url, user, password);
        System.out.println("数据库连接成功"+conn);
        return conn;
    }

    //3.关闭连接
    public static void get_close(ResultSet rs , PreparedStatement pstm , Connection conn) throws SQLException {
        if(rs != null){
            rs.close();
        }
        if(pstm != null){
            pstm.close();
        }
        if(conn != null){
            conn.close();
        }
    }

    //所有写在代码里的main测试都是白盒测试/单元测试
    public static void main(String[] args) {
        try {
            get_Conn();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

同时我们可以将用户类的操作也进行封装

public class User {
    //1.对属性的封装
    private int id; //用户ID
    private String username;   //用户名
    private String password;       //用户密码

    //2.对get和set的封装

    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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


    //3.构造方法

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public User() {
    }

    //4.toString方法的重写

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }


}

运用这种方式,我们接下来就可以进行简单的增删查改操作,以及遍历表种数据的操作了

//测试增加
    public void addUser(User user){
        try {
            //1.获取连接
            conn = DBUtil.get_Conn();
            //2.获取存放sql语句的对象
            pstm = conn.prepareStatement("insert into tb_user(username,password)values(?,?)");
            //3.填坑
            pstm.setString(1,user.getUsername());
            pstm.setString(2,user.getPassword());
            //4.执行sql并得到结果
            int i = pstm.executeUpdate();
            if(i>0){
                System.out.println("增加成功");
            }else{
                System.out.println("增加失败");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                DBUtil.get_close(null,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    //删除
    public void delUser(User user){
        try {
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement("delete from tb_user where username=? and password=?");
            pstm.setString(1,user.getUsername());
            pstm.setString(2,user.getPassword());
            int i = pstm.executeUpdate();
            if(i>0){
                System.out.println("删除成功");
            }else{
                System.out.println("删除失败");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                DBUtil.get_close(null,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

    //查询
    public void selUser(User user){
        try {
            User userc;
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement("select * from tb_user where username=? and password=?");
            pstm.setString(1,user.getUsername());
            pstm.setString(2,user.getPassword());
            rs = pstm.executeQuery();
            if(rs != null){
                System.out.println("查询成功");
                while(rs.next()){
                    System.out.println("用户ID:"+rs.getInt(1));
                    System.out.println("用户名"+rs.getString(2));
                    System.out.println("密码"+rs.getString(3));
                }
            }else{
                System.out.println("查询失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                DBUtil.get_close(rs,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    //更新
    public void upUser(User user){
        try {
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement("update tb_user set password=? where username=?");
            pstm.setString(1,user.getPassword());
            pstm.setString(2,user.getUsername());
            int i = pstm.executeUpdate();
            if(i>0){
                System.out.println("修改成功");
            }else{
                System.out.println("修改失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                DBUtil.get_close(null,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    //遍历
    public void allUser(){
        try {
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement("select * from tb_user");
            rs = pstm.executeQuery();
            while(rs.next()){
                System.out.println("用户ID:"+rs.getInt(1));
                System.out.println("用户名"+rs.getString(2));
                System.out.println("密码"+rs.getString(3));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                DBUtil.get_close(null,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

你可能感兴趣的:(数据库)