使用JDBC对数据库进行CRUD

来源:互联网 发布:哪个软件直播笑傲江湖 编辑:程序博客网 时间:2024/04/30 13:47

statement对象介绍

Jdbc中的Statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)
Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

使用JDBC对数据库增删改查

搭建实验环境

在mysql中创建一个库,并创建user表以及插入一些数据。SQL脚本如下:

create database day14;use day14;create table users (    id int primary key,    name varchar(40),    password varchar(40),    email varchar(60),    birthday date);insert into users(id,name,password,email,birthday) values(1,'zs','123456','zs@sina.com','1980-12-04');insert into users(id,name,password,email,birthday) values(2,'lisi','123456','lisi@sina.com','1981-12-04');insert into users(id,name,password,email,birthday) values(3,'wangwu','123456','wangwu@sina.com','1979-12-04');

接下来我们编写程序对users表进行CRUD(增删改查)操作,为了更通用,应编写一个工具类来简化CRUD操作。(工具类中的异常暂不处理)

  1. 新建一个JavaWeb工程,并导入MySQL数据库驱动。
    这里写图片描述
  2. 在src目录下创建一个db.properties文件,如下图所示:
    这里写图片描述
    在db.properties中编写MySQL数据库的连接信息,代码如下所示:

    driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/day14username=rootpassword=yezi
  3. 在cn.itcast.utils包下编写一个JdbcUtils工具类,如下图所示:
    这里写图片描述
    JdbcUtils工具类用于连接数据库,获取数据库连接和释放数据库连接,代码如下:

    public class JdbcUtils {    private static Properties config = new Properties();    // 静态代码块只执行一次,因为静态代码块在类加载时执行,类永远只加载一次    static {        try {            config.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));            Class.forName(config.getProperty("driver"));        } catch (Exception e) {            /*             * db.properties文件都无法读取,那么整个应用程序无法连接数据库;             * 驱动都加载不了,那么整个应用程序都无法工作,             * 所以都应该抛一个错误(ExceptionInInitializerError)             */            throw new ExceptionInInitializerError(e);         }    }    public static Connection getConnection() throws SQLException {        return DriverManager.getConnection(config.getProperty("url"), config.getProperty("username"), config.getProperty("password"));    }    public static void release(Connection conn, Statement st, ResultSet rs) {        if (rs!=null) {            try {                rs.close(); // 假设throw异常            } catch (Exception e) {                e.printStackTrace(); // 只需在后台记录异常            }            rs = null; // 假设rs对象没有释放,将其置为null,该对象就变成垃圾,由Java垃圾回收器回收        }        if (st!=null) {            try {                st.close(); // 假设throw异常            } catch (Exception e) {                e.printStackTrace(); // 只需在后台记录异常            }            st = null;        }        if (conn!=null) {            try {                conn.close();            } catch (Exception e) {                e.printStackTrace(); // 只需在后台记录异常            }        }    }}
  4. 对于数据库里面的每一张表,我们都应该创建一个对应的java类,所以对应数据库中的users表,应创建一个User类,从users表查询出来的数据,我们就可以用User类来封装其数据了。
    在cn.itcast.domain包中创建一个User类,如下所示:
    这里写图片描述
    User类的代码如下所示:

    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;    }}

使用statement对象完成对数据库的CRUD操作

CRUD操作-create

使用executeUpdate(String sql)方法完成数据添加操作。

public void insert() throws SQLException {    Connection conn = null;    Statement st = null;    ResultSet rs = null;    try {        conn = JdbcUtils.getConnection();        st = conn.createStatement();        String sql = "insert into users(id,name,password,email,birthday) values(4,'liayun','123321','liayun@163.com','1992-10-06')";        int num = st.executeUpdate(sql);        if (num>0) {            System.out.println("插入成功!!!");        }    } finally {        JdbcUtils.release(conn, st, rs);    }}

CRUD操作-updata

使用executeUpdate(String sql)方法完成数据修改操作。

public void update() throws SQLException {    Connection conn = null;    Statement st = null;    ResultSet rs = null;    try {        conn = JdbcUtils.getConnection();        st = conn.createStatement();        String sql = "update users set name='liyunling' where id='4'";        int num = st.executeUpdate(sql);        if (num>0) {            System.out.println("更新成功!!!");        }    } finally {        JdbcUtils.release(conn, st, rs);    }}

CRUD操作-delete

使用executeUpdate(String sql)方法完成数据删除操作。

public void delete() throws SQLException {    Connection conn = null;    Statement st = null;    ResultSet rs = null;    try {        conn = JdbcUtils.getConnection();        st = conn.createStatement();        String sql = "delete from users where id=4";        int num = st.executeUpdate(sql);        if (num>0) {            System.out.println("删除成功!!!");        }    } finally {        JdbcUtils.release(conn, st, rs);    }}

CRUD操作-read

使用executeQuery(String sql)方法完成数据查询操作。

  • 根据id来查询用户信息。

    public void find() throws SQLException {    Connection conn = null;    Statement st = null;    ResultSet rs = null;    try {        conn = JdbcUtils.getConnection();        st = conn.createStatement();        String sql = "select id,name,password,email,birthday from users where id=1";        rs = st.executeQuery(sql);        User user = null;        if(rs.next()) {            user = new User();            user.setId(rs.getInt("id"));// === user.getId(rs.getInt(1));            user.setName(rs.getString("name"));            user.setPassword(rs.getString("password"));            user.setEmail(rs.getString("email"));            user.setBirthday(rs.getDate("birthday"));        }        System.out.println(user);    } finally {        JdbcUtils.release(conn, st, rs);    }}
  • 查询所有用户的信息。

    public void getAll() throws SQLException {    Connection conn = null;    Statement st = null;    ResultSet rs = null;    try {        conn = JdbcUtils.getConnection();        st = conn.createStatement();        String sql = "select id,name,password,email,birthday from users";        rs = st.executeQuery(sql);        List<User> list = new ArrayList<User>();        while(rs.next()) {            User user = new User();            user.setId(rs.getInt("id"));// === user.getId(rs.getInt(1));            user.setName(rs.getString("name"));            user.setPassword(rs.getString("password"));            user.setEmail(rs.getString("email"));            user.setBirthday(rs.getDate("birthday"));            list.add(user);        }        System.out.println(list); // 断点查看    } finally {        JdbcUtils.release(conn, st, rs);    }}
0 0
原创粉丝点击