Java Web基础入门第四十六讲 使用JDBC对数据库进行CRUD
发布日期:2021-06-30 17:58:08 浏览次数:2 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java Web基础入门第四十七讲 对基于Servlet+JSP+JavaBean开发模式的用户登录注册的升级
下一篇:Java Web基础入门第四十五讲 JDBC学习入门

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年05月01日 19时56分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章