一,enum类型的使用

  在SQL中没有布尔类型的数据,我们都使用过布尔类型,当属性的值只用两种情况时。例如性别等。那在数据库对这些属性的值个数比较少时我们应该使用什么数据类型呢?SQL给我们提供了枚举类型可以使用。例如:gender enum('男','女') not null;

SQL文件:(之后也是用该表)注意:本文章使用的数据库是mysql,版本是mysql8.0.18.

  1. SHOW DATABASES;
  2. USE student;
  3. CREATE TABLE stu_message(
  4. id BIGINT(20) AUTO_INCREMENT PRIMARY KEY, --自增编号
  5. log_name VARCHAR(50) NOT NULL, --登入名
  6. log_pwd VARCHAR(20) NOT NULL,--登入密码
  7. stu_id VARCHAR(20) NOT NULL,--学生学号
  8. stu_name VARCHAR(20),--学生的姓名
  9. gender ENUM('男','女') NOT NULL,--性别
  10. birthday BIGINT(20),--生日
  11. state ENUM('正常','在线') --状态
  12. )
  13. INSERT INTO stu_message(log_name,log_pwd,stu_id,stu_name,gender,birthday,state) VALUES('qijian','root','20180000','qijian','男','20200101','正常');
  14. INSERT INTO stu_message(log_name,log_pwd,stu_id,stu_name,gender,birthday,state) VALUES('herry','root','20180001','qijian','男','20200101','正常');
  15. INSERT INTO stu_message(log_name,log_pwd,stu_id,stu_name,gender,birthday,state) VALUES('tom','root','20180002','qijian','男','20200101','正常');

JDBC访问数据库思路:

1、加载驱动程序   Class.forName(“驱动类的类名”);在mysql8.0之前的驱动类的类名是‘com.mysql.jdbc.Driver’,mysql8.0之后的版本使用‘com.mysql.cj.jdbc.Driver’

2、获取Connection连接对象   DriverManager.getConnection(数据库连接字符串,登录用户名,登录密码)

  Connection(String url,String user,String password)

  参数说明:

    •   url:访问数据库的 URL 路径。
    •   user:是访问数据库的用户名。
    •   password:连接数据库的密码。

3、创建Statement对象(PreparedStatement)对象(内容:SQL语句)

4、调用Statement对象的方法:增删改操作,ExecuteUpdate 查ExecuteQuery.(调用Statement对象的方法,执行命令,对数据库进行增删改查等操作)

5、处理结果

6、关闭资源

  注意:关闭资源时要遵循“先打开的资源后关闭,后打开的资源先关闭“

.java文件

  1. 1 package com.qijian.dao;
  2. 2
  3. 3 import java.sql.Connection;
  4. 4 import java.sql.DriverManager;
  5. 5 import java.sql.ResultSet;
  6. 6 import java.sql.Statement;
  7. 7
  8. 8 public class student {
  9. 9 // 定义为静态方法有益于节约系统的资源
  10. 10 private static final String url = "jdbc:mysql://localhost:3306/student?serverTimezone=GMT%2B8";
  11. 11 private static final String username = "root";
  12. 12 private static final String password = "root";
  13. 13
  14. 14 public static void main(String[] args) throws Exception {
  15. 15 Connection con = null;
  16. 16 Statement stm = null;
  17. 17 // 1 加载驱动类,需要类的全名:包名.类名
  18. 18 // Class.forName("com.mysql.jdbc.Driver");//mysql8.0版本之前
  19. 19 // 提示信息表明数据库驱动com.mysql.jdbc.Driver'已经被弃用了、应当使用新的驱动com.mysql.cj.jdbc.Driver'
  20. 20 Class.forName("com.mysql.cj.jdbc.Driver");//mysql8.0之后
  21. 21
  22. 22 // 2 获取连接对象:数据库连接字符串,登录用户名,登录密码
  23. 23 con = DriverManager.getConnection(url, username, password);
  24. 24
  25. 25 // 3,创建 Statement对象,建立命令
  26. 26 String sql = "select * from stu_message";
  27. 27 stm = con.createStatement();
  28. 28
  29. 29 // 4,调用Statement对象的方法,执行命令,对数据库进行增删改查等操作
  30. 30 ResultSet rs = stm.executeQuery(sql);
  31. 31
  32. 32 // 5,处理结果
  33. 33 while (rs.next()) {
  34. 34 System.out.print("id:" + rs.getInt("id"));
  35. 35 System.out.print(" 登入名:" + rs.getString("log_name"));
  36. 36 System.out.print(" 密码:" + rs.getString("log_pwd"));
  37. 37 System.out.print(" 学号:" + rs.getString("stu_id"));
  38. 38 System.out.print(" 姓名:" + rs.getString("stu_name"));
  39. 39 System.out.print(" 性别:" + rs.getString("gender"));
  40. 40 System.out.println(" 生日:" + rs.getInt("birthday"));
  41. 41 System.out.println(" 状态:" + rs.getString("state"));
  42. 42 System.out.println();
  43. 43 }
  44. 44
  45. 45 // 6关闭资源
  46. 46 if (rs != null)
  47. 47 rs.close();
  48. 48 if (stm != null)
  49. 49 stm.close();
  50. 50 if (con != null)
  51. 51 con.close();
  52. 52
  53. 53 }
  54. 54 }

执行结果:

上面代码是针对数据的查找的操作,会发现增删改查的方法都会使用大片相同的代码。所以可以对代码进行一定的简化。如下

JDBCUtil.java文件:

  1. 1 package com.qijian.dao;
  2. 2
  3. 3 import java.sql.Connection;
  4. 4 import java.sql.DriverManager;
  5. 5 import java.sql.ResultSet;
  6. 6 import java.sql.SQLException;
  7. 7 import java.sql.Statement;
  8. 8
  9. 9 public class JDBCUtil {
  10. 10 // 定义为静态方法有益于节约系统的资源
  11. 11 private static final String url = "jdbc:mysql://localhost:3306/student?serverTimezone=GMT%2B8";
  12. 12 private static final String username = "root";
  13. 13 private static final String password = "root";
  14. 14 static String driverclass = "com.mysql.cj.jdbc.Driver";
  15. 15
  16. 16
  17. 17
  18. 18 // 注册驱动与创建连接
  19. 19 public static Connection getConn() throws Exception {
  20. 20 Connection con = null;
  21. 21 // 1 加载驱动类,需要类的全名:包名.类名
  22. 22 // Class.forName("com.mysql.jdbc.Driver");
  23. 23 // 提示信息表明数据库驱动com.mysql.jdbc.Driver'已经被弃用了、应当使用新的驱动com.mysql.cj.jdbc.Driver'
  24. 24 Class.forName(driverclass);
  25. 25 // 2 获取连接对象:数据库连接字符串,登录用户名,登录密码
  26. 26 con = DriverManager.getConnection(url, username, password);
  27. 27 return con;
  28. 28 }
  29. 29
  30. 30 // 关闭资源 关闭 Connection -》Statement -》ResultSet
  31. 31 public static void release(Connection conn, Statement st, ResultSet rs) {
  32. 32 closeRs(rs);
  33. 33 closeSt(st);
  34. 34 closeConn(conn);
  35. 35 }
  36. 36
  37. 37 // 关闭资源 关闭 Connection -》Statement
  38. 38 public static void release(Connection conn, Statement st) {
  39. 39 closeSt(st);
  40. 40 closeConn(conn);
  41. 41 }
  42. 42
  43. 43 //关闭ResultSet
  44. 44 private static void closeRs(ResultSet rs) {
  45. 45 try {
  46. 46 if (rs != null)
  47. 47 rs.close();
  48. 48 } catch (SQLException e) {
  49. 49 e.printStackTrace();
  50. 50 } finally {
  51. 51 rs = null;
  52. 52 }
  53. 53 }
  54. 54
  55. 55 // 关闭Statement
  56. 56 private static void closeSt(Statement st) {
  57. 57 try {
  58. 58 if (st != null)
  59. 59 st.close();
  60. 60 } catch (SQLException e) {
  61. 61 e.printStackTrace();
  62. 62 } finally {
  63. 63 st = null;
  64. 64 }
  65. 65 }
  66. 66
  67. 67 //关闭连接connection
  68. 68 private static void closeConn(Connection conn) {
  69. 69 try {
  70. 70 if (conn != null)
  71. 71 conn.close();
  72. 72 } catch (SQLException e) {
  73. 73
  74. 74 e.printStackTrace();
  75. 75 } finally {
  76. 76 conn = null;
  77. 77 }
  78. 78
  79. 79 }
  80. 80
  81. 81
  82. 82 }
  1. 1 package com.qijian.test;
  2. 2
  3. 3 import java.sql.Connection;
  4. 4 import java.sql.PreparedStatement;
  5. 5 import java.sql.ResultSet;
  6. 6 import java.sql.Statement;
  7. 7
  8. 8 import com.qijian.dao.JDBCUtil;
  9. 9
  10. 10 public class testStudent {
  11. 11
  12. 12 public static void findAll() throws Exception {
  13. 13 Connection conn = null;
  14. 14 Statement st = null;
  15. 15 conn = JDBCUtil.getConn();
  16. 16 // 3,创建 Statement对象,建立命令
  17. 17 String sql = "select * from stu_message";
  18. 18 st = conn.createStatement();
  19. 19
  20. 20 // 4,调用Statement对象的方法,执行命令,对数据库进行增删改查等操作
  21. 21 ResultSet rs = st.executeQuery(sql);
  22. 22
  23. 23 // 5,处理结果
  24. 24 while (rs.next()) {
  25. 25 System.out.print("id:" + rs.getInt("id"));
  26. 26 System.out.print(" 登入名:" + rs.getString("log_name"));
  27. 27 System.out.print(" 密码:" + rs.getString("log_pwd"));
  28. 28 System.out.print(" 学号:" + rs.getString("stu_id"));
  29. 29 System.out.print(" 姓名:" + rs.getString("stu_name"));
  30. 30 System.out.print(" 性别:" + rs.getString("gender"));
  31. 31 System.out.println(" 生日:" + rs.getInt("birthday"));
  32. 32 System.out.println(" 状态:" + rs.getString("state"));
  33. 33 System.out.println();
  34. 34 }
  35. 35
  36. 36 JDBCUtil.release(conn, st, rs);
  37. 37
  38. 38 }
  39. 39
  40. 40 public static void insert() throws Exception {
  41. 41 Connection conn = null;
  42. 42 PreparedStatement pstm = null;
  43. 43 conn = JDBCUtil.getConn();
  44. 44
  45. 45 // 3,创建prepareStatement对象,建立命令
  46. 46 String sql = "INSERT INTO stu_message(log_name,log_pwd,stu_id,stu_name,gender,birthday,state) VALUES('lisi','root','20180002','qijian','男','20200101','正常')";
  47. 47 pstm = conn.prepareStatement(sql);
  48. 48
  49. 49 // 4,调用prepareStatement对象的方法,执行命令,对数据库进行增删改查等操作
  50. 50 int rows = pstm.executeUpdate();
  51. 51
  52. 52 // 5 处理结果
  53. 53 if (rows > 0) {
  54. 54 System.out.println("新增成功");
  55. 55 } else {
  56. 56 System.out.println("新增失败");
  57. 57 }
  58. 58
  59. 59 JDBCUtil.release(conn, pstm);
  60. 60 }
  61. 61
  62. 62 public static void updata() throws Exception {
  63. 63 Connection conn = null;
  64. 64 PreparedStatement pstm = null;
  65. 65 conn = JDBCUtil.getConn();
  66. 66 // 3,创建prepareStatement对象,建立命令
  67. 67 String sql = "UPDATE stu_message SET log_name='tomp' WHERE id = 3;";
  68. 68 pstm = conn.prepareStatement(sql);
  69. 69 // 4,调用prepareStatement对象的方法,执行命令,对数据库进行增删改查等操作
  70. 70 int rows = pstm.executeUpdate();
  71. 71 // 5 处理结果
  72. 72 if (rows > 0) {
  73. 73 System.out.println("修改成功!!!");
  74. 74 } else {
  75. 75 System.out.println("修改失败!!!");
  76. 76 }
  77. 77
  78. 78 // 6关闭资源
  79. 79 JDBCUtil.release(conn, pstm);
  80. 80 }
  81. 81
  82. 82 public static void delete() throws Exception {
  83. 83 Connection conn = null;
  84. 84 PreparedStatement pstm = null;
  85. 85 conn = JDBCUtil.getConn();
  86. 86
  87. 87 // 3,创建prepareStatement对象,建立命令
  88. 88 String sql = "DELETE FROM stu_message WHERE id = 5";
  89. 89 pstm = conn.prepareStatement(sql);
  90. 90
  91. 91 // 4,调用prepareStatement对象的方法,执行命令,对数据库进行增删改查等操作
  92. 92 int rows = pstm.executeUpdate();
  93. 93
  94. 94 // 5 处理结果
  95. 95 if (rows > 0) {
  96. 96 System.out.println("删除成功!!!");
  97. 97 } else {
  98. 98 System.out.println("删除失败!!!");
  99. 99 }
  100. 100
  101. 101 // 6关闭资源
  102. 102 JDBCUtil.release(conn, pstm);
  103. 103 }
  104. 104
  105. 105 public static void main(String[] args) throws Exception {
  106. 106 testStudent.findAll();
  107. 107 // testStudent.delete();
  108. 108 // testStudent.insert();
  109. 109 // testStudent.updata();
  110. 110 }
  111. 111
  112. 112 }

结果:

jdbc编程学习之增删改查(2)的更多相关文章

  1. 通过JDBC进行简单的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  2. 通过JDBC进行简单的增删改查(以MySQL为例) 目录

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  3. Java通过JDBC进行简单的增删改查(以MySQL为例)

    Java通过JDBC进行简单的增删改查(以MySQL为例) 目录: 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JD ...

  4. JDBC学习笔记——增删改查

    1.数据库准备  要用JDBC操作数据库,第一步当然是建立数据表: ? 1 2 3 4 5 6 CREATE TABLE `user` (   `id` int(11) NOT NULL AUTO_I ...

  5. 通过JDBC进行简单的增删改查(以MySQL为例)

    目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 ( ...

  6. JDBC进行简单的增删改查

    一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)up ...

  7. 通过JDBC进行简单的增删改查(二)

    本章笔记更易理解和学习,也是我第一次初学的笔记. package javastudy; import java.sql.Connection; import java.sql.DriverManage ...

  8. 采用c3p0数据库连接池底层是jdbc的数据库的增删改查

    1.新建dbutils包,里面是JdbcUtils类: package cn.com.xxx.xxx.dbutil; import java.sql.Connection; import java.s ...

  9. 使用JDBC进行简单的增删改查

    JDBC为java的基础.用jdbc实现对数据库的增删改查的功能是程序员的基本要求.本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包. ...

随机推荐

  1. jvm系列(一)运行时数据区

    C++程序员肩负着每一个对象生命周期开始到终结的维护责任.Java程序员则可以借助自动内存管理机制,不需要自己手动去释放内存.由虚拟机进行内存管理,不容易出现内存泄漏和内存溢出的问题,但是一旦出现这些 ...

  2. CentOS SSH安全和配置无密码登录

    CentOS ssh默认监听端口 22端口,允许root用户ssh登录.server投入生产后很有必要更改默认ssh监听端口和禁止root登录. 步骤1:确认安装有ssh包 [appuser@su17 ...

  3. LeetCode 024 Swap Nodes in Pairs

    题目描述:Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For ...

  4. 总结一下 php连接oracle,完全可用。

    大致有两种方法 第一种 开启php_pdo_oci扩展,一般集成环境都会有这个扩展. 这个东西还是比较简单的,去官网查看吧 http://php.net/manual/zh/book.pdo.php ...

  5. 在 CentOS 7 安装 RabbitMQ

    一.安装 Erlang RabbitMQ 是使用 Erlang 开发的,所以需要首先安装 Erlang,本文安装其最新版本 添加 repo 文件: sudo vim /etc/yum.repos.d/ ...

  6. 第11.6节 Python正则表达式的字符串开头匹配模式及元字符“^”(插入符、脱字符)功能介绍

    符号"^"为插入符,也称为脱字符,在Python中脱字符表示匹配字符串的开头,即字符串的开头满足匹配模式的要求.这个功能有点类似搜索函数match,只是这是通过搜索模式来指定,而m ...

  7. sklearn决策树应用及可视化

    from sklearn import datasets from sklearn.tree import DecisionTreeClassifier 1.载入iris数据集(from sklear ...

  8. javascript中 fn() 和 return fn() 的区别

    在js中用return和不用return,输出结果有的时候傻傻搞不清,之前在网上看到个例子挺经典,不过讲的不清楚,上例子: var i = 0; function fn(){    i++;   if ...

  9. Day5 - 01 函数及函数的调用概念

    函数就是最基本的一种代码抽象的方式.函数只需写一次,就可以多次调用.Python本身内置了很多有用的函数,可以直接调用. 调用函数    要调用一个函数,需要知道函数的名称和参数.可以通过help(x ...

  10. 从面试角度分析ArrayList源码

    注:本系列文章中用到的jdk版本均为java8 ArrayList类图如下: ArrayList的底层是由数组实现的,数组的特点是固定大小,而ArrayList实现了动态扩容. ArrayList部分 ...