本文共 6355 字,大约阅读时间需要 21 分钟。
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操作。(工具类中的异常暂不处理)。
首先,新建一个Java普通工程,并导入MySQL数据库驱动。 然后,在src目录下创建一个db.properties文件,如下图所示: 在db.properties中编写MySQL数据库的连接信息,内容如下所示:driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/day14username=rootpassword=liayun
接着,在cn.liayun.utils包下编写一个JdbcUtils工具类,JdbcUtils工具类用于连接数据库,获取数据库连接和释放数据库连接,代码如下:
package cn.liayun.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;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();// 假设throw异常 } catch (Exception e) { e.printStackTrace();// 只需在后台记录异常 } conn = null; } } }
最后,对于数据库里面的每一张表,我们都应该创建一个对应的Java类,所以对应数据库中的users表,应创建一个User类,从users表查询出来的数据,我们就可以用User类来封装其数据了。于是,在cn.liayun.domain包中创建一个User类,User类的代码如下所示:
package cn.liayun.domain;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; }}
使用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,'zhaomin','123321','zhaomin@qq.com','1980-09-07')"; 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='张无忌' 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.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
list = new ArrayList (); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); 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); }}
转载地址:https://liayun.blog.csdn.net/article/details/52276522 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!