1.实现第一个JDBC程序

在MySQL中创建一个名称为jdbc的数据库,然后在该数据库中创建一个users表,创建
数据库和表的SQL语句如下所示。

CREATE DATABASE jdbc;USE jdbc;CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(40),password VARCHAR(40),email VARCHAR(60),birthday DATE)CHARACTER SET utf8 COLLATE utf8_general_ci;

数据库和表创建成功后,创建插入记录:

INSERT INTO users (NAME, PASSWORD, email, birthday)
VALUES('zs', '123456','zs@sina.com','1980-12-04');
INSERT INTO users (NAME, PASSWORD, email,birthday)
VALUES('lisi','123456','lisi0sina.com','1981-12-04');
INSERT INTO users (NAME, PASSWORD, email,birthday)
VALUES('wangwu','123456','wangwu@sina.com','1979-12-04');

执行结果如图

2.编写JDBC程序

在项目chapter09的src目录下,新建一个名称为chapter02.jdbc.example的包,在该包中创建类Example01,该类用于读取数据库中的users表,并将结果输出到控制台

package chapter12.jdbc.example;import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;public class example01 {public static void main(String[] args) throws SQLException{Connection conn = null;Statement stmt = null;ResultSet rs  = null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC";String username = "root";String password = "123456";conn = DriverManager.getConnection(url,username,password);stmt = conn.createStatement();String sql = "select * from users";rs = stmt.executeQuery(sql);while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");String psw = rs.getString("password");String email = rs.getString("email");Date birthday = rs.getDate("birthday");System.out.println(id+" "+name+" "+email+" "+birthday);}}catch (ClassNotFoundException e) {// TODO: handle exceptione.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO: handle exceptione.printStackTrace();}rs=null;}if (stmt!=null) {try {stmt.close();} catch (SQLException e) {// TODO: handle exceptione.printStackTrace();}stmt=null;}if (conn!=null) {try {conn.close();} catch (SQLException e) {// TODO: handle exceptione.printStackTrace();}conn=null;}}}
}

结果如图

PreparedStatement对象

在该类中使用PreparedStatement对象对数据库进行插入数据的操作

package chapter12.jdbc.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class example02 {public static void main(String[] args) throws SQLException{Connection conn = null;PreparedStatement preStmt = null;try {Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC";String username = "root";String password = "123456";conn = DriverManager.getConnection(url,username,password); String sql ="INSERT INTO users (NAME, PASSWORD, email,birthday)"+"VALUES(?,?,?,?)";preStmt =conn.prepareStatement(sql);preStmt.setString(1, "zl");preStmt.setString(2, "123456");preStmt.setString(3, "zl@sina.com");preStmt.setString(4, "1789-12-23");preStmt.executeUpdate();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {if(preStmt!=null) {try {preStmt.close();} catch (SQLException e) {e.printStackTrace();}preStmt = null;}if(conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}conn=null;}}}
}

查询结果如图

ResultSet对象

使用ResultSet对象取出指定数据的信息

package chapter12.jdbc.example;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class example03 {public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC";String username = "root";String password = "123456";conn = DriverManager.getConnection(url,username,password);String sql = "select * from users";stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet rs = stmt.executeQuery(sql);System.out.print("第2条数据的name值为:");rs.absolute(2);System.out.println(rs.getNString("name"));System.out.print("第1条数据的name值为:");rs.beforeFirst();  //将指针定位到结果集中第一行数据之前rs.next();   //指针向后滚动System.out.println(rs.getString("name"));System.out.print("第4条数据的name值为:");rs.afterLast(); //将指针定位到结果集中最后一条数据之后rs.previous();    //指针向前滚动System.out.println(rs.getString("name"));} catch (Exception e) {e.printStackTrace();} finally {if(stmt!=null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}stmt = null;}if(conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}conn=null;}}}
}

程序的运行结果如图

使用JDBC完成数据的增删改查

1.创建JavaBean

User类的具体实现方式如下

package chapter12.jdbc.example;import java.util.Date;public class user {private int id;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}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;}private String username;private String password;private String email;private Date birthday;}

2.创建工具类

由于每次操作数据库时,都需要加载数据库驱动、建立数据库连接以及关闭数据库连接,为了避免代码的重复书写,下面建立一个专门用于数据库相关操作的工具类。在包中创建一个封装了上述操作的工具类JDBCUtils,JDBCUtils的具体实现方式如下

package chapter12.jdbc.example;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JDBCUtils {public static Connection getConnection() throws SQLException,ClassNotFoundException{Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC";String username = "root";String password = "123456";Connection conn = DriverManager.getConnection(url,username,password);return conn;}public static void release(Statement stmt, Connection conn) {if(stmt!=null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}stmt = null;}if(conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}conn=null;}}public static void release(ResultSet rs,Statement stmt,Connection conn) {if(rs!=null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}rs = null;}release(stmt, conn);}}

3.创建DAO

代码如下:

package chapter12.jdbc.example;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;import chapter12.jdbc.example.user;
import chapter12.jdbc.example.JDBCUtils;public class UsersDao {//添加用户的操作public boolean insert(user user) {Connection conn = null;Statement stmt=null;ResultSet rs = null;try {conn = JDBCUtils.getConnection();stmt = conn.createStatement();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String birthday = sdf.format(user.getBirthday());String sql = "INSERT INTO users(id,name,password,email,birthday)"+"VALUES("+user.getId()+",'"+user.getUsername()+"','"+user.getPassword()+"','"+user.getEmail()+"','"+birthday + "')";System.out.println(sql);int num = stmt.executeUpdate(sql);if (num > 0) {return true;}return false;} catch (Exception e) {e.printStackTrace();} finally {JDBCUtils.release(rs,stmt,conn);}return false;}public ArrayList<user> findAll(){Connection conn = null;Statement stmt=null;ResultSet rs = null;ArrayList<user> list = new ArrayList<user>();try {conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "SELECT * FROM users";rs = stmt.executeQuery(sql);while(rs.next()) {user user = new user();user.setId(rs.getInt("id"));user.setUsername(rs.getString("name"));user.setPassword(rs.getString("password"));user.setEmail(rs.getString("email"));user.setBirthday(rs.getDate("birthday"));list.add(user);}return list;} catch (Exception e) {e.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return null;}public user find(int id) {Connection conn=null;Statement stmt=null;ResultSet rs = null;try {conn = JDBCUtils.getConnection();stmt=conn.createStatement();String sql = "SELECT * FROM users WHERE id=" + id;rs = stmt.executeQuery(sql);while(rs.next()) {user user = new user();user.setId(rs.getInt("id"));user.setUsername(rs.getString("name"));user.setPassword(rs.getString("password"));user.setEmail(rs.getString("email"));user.setBirthday(rs.getDate("birthday"));return user;}return null;} catch (Exception e) {e.printStackTrace();} finally {JDBCUtils.release(rs,stmt, conn);}return null;}public boolean delete(int id) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {conn = JDBCUtils.getConnection();stmt= conn.createStatement();String sql = "DELETE FROM users WHERE id=" + id;int num =stmt.executeUpdate(sql);if(num > 0) {return true;}return false;} catch (Exception e) {e.printStackTrace();} finally {JDBCUtils.release(rs, stmt,conn);}return false;}public boolean update(user user) {Connection conn =null;Statement stmt = null;ResultSet rs = null;try {conn= JDBCUtils.getConnection();stmt = conn.createStatement();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String birthday =sdf.format(user.getBirthday());String sql = "UPDATE users set name='"+user.getUsername()+"',password='"+user.getPassword() + "',email='"+user.getEmail() + "',birthday='" + birthday+"'WHERE id=" + user.getId();int num = stmt.executeUpdate(sql);if (num > 0) {return true;}return false;} catch (Exception e) {e.printStackTrace();}finally {JDBCUtils.release(rs, stmt, conn);}return false;}
}

4.创建测试类

代码如下:

package chapter12.jdbc.example;import java.util.Date;
import chapter12.jdbc.example.user;
import chapter12.jdbc.example.JDBCUtils;public class JdbcInsertTest {public static void main(String[] args) {//向users表插入一个用户信息UsersDao ud = new UsersDao();user user=new user();user.setId(5);user.setUsername("hl");user.setPassword("123");user.setEmail("hl@sina.com");user.setBirthday(new Date());boolean b= ud.insert(user);System.out.println(b);}}

结果如图

从查询结果可以看出,users表中添加了一条name为h1的数据,该数据正是文件 JdbclnsertTest.java中所插入的数据。

编写测试类FindAllUsersTest,该类用于实现读取users表中所有的数据:

package chapter12.jdbc.example;import java.util.ArrayList;public class FindAllUsersTest {public static void main(String[] args) {UsersDao usersDao = new UsersDao();ArrayList<user> list = usersDao.findAll();for (int i=0; i< list.size(); i++) {System.out.println("第" + (i+1) + "条数据的username的值为:"+list.get(i).getUsername());}}}

结果如图:

编写测试类FindUserByldTest,在该类中实现读取 users表中指定的数据:

package chapter12.jdbc.example;
import chapter12.jdbc.example.UsersDao;
import chapter12.jdbc.example.user;public class FindUserByldTest {public static void main(String[] args) {UsersDao usersDao = new UsersDao();user user = usersDao.find(1);System.out.println("id为1的User对象的name值为:"+user.getUsername());}}

结果如图:

编写测试类UpdateUserTest,在该类中实现修改users表中数据的操作:

package chapter12.jdbc.example;import java.util.Date;import chapter12.jdbc.example.UsersDao;
import chapter12.jdbc.example.user;public class UpdateUserTest {public static void main(String[] args) {UsersDao usersDao = new UsersDao();user user = new user();user.setId(4);user.setUsername("zhaoxiaoliu");user.setPassword("456");user.setEmail("zhaoxiaoliu@sina.com");user.setBirthday(new Date());boolean b=usersDao.update(user);System.out.println(b);}}

查询结果如图:

编写测试类DeleteUserTest,该类实现了删除users 表中数据的操作:

package chapter12.jdbc.example;import chapter12.jdbc.example.UsersDao;public class DeleteUserTest {public static void main(String[] args) {UsersDao usersDao = new UsersDao();boolean b = usersDao.delete(4);System.out.println(b);}}

结果如图:

从图中可以看出,users表中id为4的User对象已被成功删除了。至此,使用JDBC对数据库中数据进行增删改查的操作已经完成。

JavaWeb JDBC相关推荐

  1. 基于javaweb+mysql的学生选课系统(java+javaweb+jdbc)

    基于javaweb+mysql的学生选课系统(java+javaweb+jdbc) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse ...

  2. 基于javaweb的学生选课系统(java+javaweb+jdbc)

    基于javaweb的学生选课系统(java+javaweb+jdbc) 功能介绍: 用户菜单.学生管理.教师管理.课程管理.成绩排名查询 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 //验 ...

  3. JavaWeb JDBC初步连接和JDBC连接规范化

    感谢传智播客提供的学习视频 ,希望传智播客越来越好 package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverM ...

  4. JavaWeb——jdbc与dbcp数据库连接

    一.引言 最近在学习使用mybatis调用数据库,顺便总结了下java连接数据库的历史发展.从非常传统的jdbc连接,到数据库连接池(dbcp.c3p0)封装后的jdbc连接,再到各种框架对数据库连接 ...

  5. 20210213 黑马javaweb JDBC

    # 今日内容 1. JDBC基本概念     2. 快速入门     3. 对JDBC中各个接口和类详解 ## JDBC:     1. 概念:Java DataBase Connectivity   ...

  6. JavaWeb——JDBC

    package jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;pu ...

  7. javaweb -- jdbc

    文章目录 数据库驱动 JDBC 下载jar包 第一个 JDBC 案例 1.创建一个 普通的java 项目 2.引入jar 包 3.编写测试代码 statement 对象 抽取JDBC工具类 SQL注入 ...

  8. Java项目:医院管理系统(java+javaweb+jdbc+Mysql+lw)

    源码获取:博客首页 "资源" 里下载! 功能介绍: 登录.注册.用户/管理员(角色).用户信息管理.科系信息管理.查看所有科系.新增科系信息.删除指定科系.修改科系信息.病房信息管 ...

  9. Java项目:人事管理系统(java+javaweb+jdbc)

    源码获取:博客首页 "资源" 里下载! 功能介绍: 登录.新增.修改.离职 员工管理控制层: @Controller @RequestMapping("/employee ...

最新文章

  1. WIN7系统中连接点(Junction Points)
  2. OpenGL在frag着色器中模拟点光源
  3. 定位--position属性
  4. java iterable_太糟糕了,Java 8没有Iterable.stream()
  5. WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客
  6. 已知空间中ABC3点坐标与到D点的距离,求D点坐标
  7. 64qam带宽计算_滚降系数为0.5的64QAM信号,数据速率若为_____,则带宽为______。
  8. H3C无线控制器做用户隔离和DHCP Relay的注意事项
  9. 前后端鉴权之session-cookie
  10. 用计算机进行废物回收,回收旧的显示器以进行废物利用
  11. 六一儿童节海报合集,一起重拾童年吧~
  12. db2 删除索引_[收录量]史上最全的百度索引量下降原因分析及解
  13. SQL分析在2020年度第一季度的购买人数,销售金额,客单价,客单件人均购买频次(时间函数、分组汇总、常用指标计算)
  14. NLP 中文分词-双向匹配算法(理论+Python实现)
  15. 计算机公共基础知识实验报告,实验5-操作系统进程与文件管理--实验报告表-.docx...
  16. java程序封装最小单位,持续更新中
  17. 定位追踪器百科:宠物、老人、小孩、汽车通用的定位器
  18. 关于postgresql的安装与实用
  19. 激光SLAM从理论到实践学习——第四节(激光SLAM的前端配准方法)
  20. ReflectASM => Java 高性能反射

热门文章

  1. 在深圳网络营销培训学习中:让你的心情靓丽起来吧
  2. 萧县机器人_再见了,快递员、再见了...盘点萧县市未来最有可能失业的一大批人!...
  3. 手机5g什么时候普及_要到2021年5G手机才会普及?你认可这个说法么? - 区块网...
  4. 每日题解:LeetCode 174. 地下城游戏
  5. C++学习记录之list容器
  6. 网站如何让 ALEXA 收录
  7. 使用flask实现图书管理
  8. 如何对Excel表的姓名进行脱敏处理
  9. collecting package metadata慢_手游版LOL更新慢怎么解决 英雄联盟手游更新慢解决方法_英雄联盟手游...
  10. 都说不要让Macbook始终保持100%充电状态,但你知道为什么吗?