JDBC——常见接口详解

2019-06-22  本文已影响0人  BeaconCao
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中,这样数据方便使用。

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放入到集合里面:

@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);
}
上一篇下一篇

猜你喜欢

热点阅读