美文网首页
JDBC——常见接口详解

JDBC——常见接口详解

作者: BeaconCao | 来源:发表于2019-06-22 09:44 被阅读0次
    1. DriverManager

    该类的主要作用就是创建连接,在《JDBC——解惑及使用方法》的代码中使用了反射的机制注册了驱动,这里需要注意的是不同的数据库,在forName中的参数写法不同,MySQL的写法:com.mysql.jdbc.Driver。
    获取连接Connection时,调用了DriverManager类中的getConnection方法,该方法在DriverManager类中有几个重载方法

    getConnection(String url);
    getConnection(String url,String user, String password);
    getConnection(String url,java.util.Properties info);
    getConnection(String url, java.util.Properties info, Class<?> caller);
    

    getConnection()方法的作用就是获取数据库的连接,上面前三个中最终都调用了第4个getConnection()方法并将数据库连接的一些信息传了过去。其中java.util.Properties该类是一个跟配置文件相关的类,继承了HashTable类。

    java.util.Properties info = new java.util.Properties();
    info.setProperty("user", "root");
    info.setProperty("password","monkey1024");
    

    上面将用户名和密码封装到了info对象中,此时可以调用getConnection(String url,java.util.Properties info);这个方法将info作为参数传递过去。

    2. Statement

    该接口的作用是操作sql语句,并返回相应结果的对象。
    常用的方法如下:

    //根据查询语句返回结果集。只能执行select语句。
    ResultSet executeQuery(String sql);
    //根据执行的DML(insert update delete)语句,返回受影响的行数。
    int executeUpdate(String sql) ;
    //此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet结果集。
    //仅当执行select语句,且有返回结果时返回true, 其它语句都返回false;
    boolean execute(String sql) ;
    

    代码演示

        @Test
        public void testInsert() throws Exception{
            //1-注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2-获取连接Connection
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/monkey1024", "root", "monkey1024");
            //3-得到执行sequel语句的对象Statement
            Statement stmt = conn.createStatement();
            //4-执行sql语句,并返回结果,以下三选一构成代码。
            1-int flag = stmt.executeUpdate("insert into t_user(name,password,email,birthday) values('cat','123456','cat@163.com','1993-11-11')");
            2-int flag = stmt.executeUpdate("delete from t_user where name='cat';");
            3-int flag = stmt.executeUpdate("update t_user set password=123 where name='cat'");
            //5-处理结果 
            if(flag > 0){
                System.out.println("成功");
            }
            //6-关闭资源
            stmt.close();
            conn.close();
        }
    
    3. ResultSet

    该接口的作用主要用来封装结果集。
    使用ResultSet接收的数据使用起来比较麻烦,这个时候我们可以定义一个JavaBean类,然后将数据保存到List中,这样数据方便使用。

    • 思路:创建一个JavaBean类➡创建一个JavaBean类的集合➡将ResultSet中数据通过setXxx方法设置给JavaBean实例➡集合调用add()将数据储存到集合中。
    • 创建JavaBean
    import java.util.Date;
    
    public class User {
        private int id;
        private String name;
        private String password;
        private String email;
        private Date birthday;
    
        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 getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    }
    
    • 执行一个JDBC查询操作,将多条查询结果封装到JavaBean中并将JavaBean放入到集合里。
    执行一个JDBC查询操作,将多条查询结果封装到JavaBean中并将JavaBean放入到集合里面:
    
    @Test
    public void testSelect() throws Exception{
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
    
        //获取连接Connection
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/monkey1024", "root", "monkey1024");
        //得到执行sequel语句的对象Statement
        Statement stmt = conn.createStatement();
        //执行sql语句,并返回结果
        ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from t_user");
    
        List<User> userList = new ArrayList<>();
    
        //处理结果 
        while(rs.next()){ 
            User u = new User();
            u.setId(rs.getInt("id"));
            u.setName(rs.getString("name"));
            u.setPassword(rs.getString("password"));
            u.setEmail(rs.getString("email"));
            u.setBirthday(rs.getDate("birthday"));
    
            userList.add(u);
        }
    
        //关闭资源
        stmt.close();
        conn.close();
    
        System.out.println(userList);
    }
    

    相关文章

      网友评论

          本文标题:JDBC——常见接口详解

          本文链接:https://www.haomeiwen.com/subject/hehmqctx.html