码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2022年0705-Com.Java.Basis 第十五课 JDBC 简称CRUP


    2022年0705-Com.Java.Basis 第十五课 《Java的JDBC》简称CRUP:本篇博客文章讲的回很细。

     

    1、什么是JDBC

    JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统(DBMS)、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源

    JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

    JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

    2 什么是 CRUP:这样理解:在建立的表中 你需要删除一条记录 查询表的所有数据  修改表的字段  删除一条记录。

    实操:

    1 创建数据库 创建数据表  对数据进行 增删改查

    1. /*
    2. Navicat Premium Data Transfer
    3. Source Server : demossmtest
    4. Source Server Type : MySQL
    5. Source Server Version : 80023
    6. Source Host : localhost:3306
    7. Source Schema : students
    8. Target Server Type : MySQL
    9. Target Server Version : 80023
    10. File Encoding : 65001
    11. Date: 05/07/2022 18:13:43
    12. */
    13. SET NAMES utf8mb4;
    14. SET FOREIGN_KEY_CHECKS = 0;
    15. -- ----------------------------
    16. -- Table structure for student
    17. -- ----------------------------
    18. DROP TABLE IF EXISTS `student`;
    19. CREATE TABLE `student` (
    20. `stuId` int NOT NULL,
    21. `stuName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
    22. `stuSex` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
    23. `stuAge` int NULL DEFAULT NULL,
    24. PRIMARY KEY (`stuId`) USING BTREE
    25. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
    26. -- ----------------------------
    27. -- Records of student
    28. -- ----------------------------
    29. INSERT INTO `student` VALUES (1003, '我想', '男', 35);
    30. INSERT INTO `student` VALUES (1004, '年少清华', '男', 35);
    31. INSERT INTO `student` VALUES (1005, '爱的主宰', '男', 520);
    32. INSERT INTO `student` VALUES (1006, '我相信自己', '男', 520);
    33. INSERT INTO `student` VALUES (1008, '李四', '男', 35);
    34. SET FOREIGN_KEY_CHECKS = 1;

    2 这里要运用到是Java中常用到的架包:用来连接数据库的:

     

    3 建立包名创建工具类 先讲一下知识点 关于工具类的。

    1. package Com.Jdbc.Util;//开发者建立的包名
    2. import java.sql.Connection;
      import java.sql.DriverManager;//导入连接数据库的架包
    3. //加载驱动程序
      Class.forName("com.mysql.cj.jdbc.Driver");
    4. //数据库的所在地址
      String url = "jdbc:mysql://127.0.0.1:3306/students";
    5. //3 数据库的用户名
      String username = "root";
    6. //4 数据库的密码
      String password = "123456";
    7. conn = DriverManager.getConnection(url, username, password);

    看下面的代码:将常用到的Java功能进行封装:

    1. package Com.Jdbc.Util;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. public class DBUtil {
    5. public static Connection getConnection() {
    6. Connection conn = null;
    7. try {
    8. //加载驱动程序
    9. Class.forName("com.mysql.cj.jdbc.Driver");
    10. System.out.println("加载驱动类成功");
    11. //建立数据库
    12. //数据库的所在地址
    13. String url = "jdbc:mysql://127.0.0.1:3306/students";
    14. System.out.println("mysql连接成功");
    15. //3 数据库的用户名
    16. String username = "root";
    17. //4 数据库的密码
    18. String password = "123456";
    19. conn = DriverManager.getConnection(url, username, password);
    20. } catch (Exception e) {
    21. e.printStackTrace();
    22. System.out.println("数据库连接成功,开始了");
    23. }
    24. return conn;
    25. }
    26. //last
    27. //封装方法
    28. public static void getClose(Connection conn) {
    29. try {
    30. if (conn != null) {
    31. conn.close();
    32. }
    33. } catch (Exception e) {
    34. // TODO: handle exception
    35. e.printStackTrace();
    36. }
    37. System.err.println("数据库中的数据运行结束");
    38. }
    39. }

    4 完成第一个功能 查询表中的数据 利用java的方式:

    1. // 第一步  建立链接
      Connection conn =   DBUtil.getConnection();
    2. // 第二步 创建statement对象
      Statement stmt =conn.createStatement();
    3. // 第三步 执行mysql语句
      String sql="select *from student";
      ResultSet rs =stmt.executeQuery(sql);
    4. //第四步 遍历集合 循环遍历
      while(rs.next()) {
         int stuId=rs.getInt("stuId");
         String stuName=rs.getString("stuName");
         String stuSex=rs.getString("stuSex");
         int stuAge=rs.getInt("stuAge");
         System.out.println(stuId+"---------"+stuName+"-----------"+stuSex+"---------"+stuAge);
      
      }
    1. package Com.Jdbc.Java;
    2. import Com.Jdbc.Util.DBUtil;
    3. import java.sql.Connection;
    4. import java.sql.ResultSet;
    5. import java.sql.Statement;
    6. /**
    7. * 查询语句
    8. */
    9. public class Test3 {
    10. public static void main(String[] args) throws Exception {
    11. // 第一步 建立链接
    12. Connection conn = DBUtil.getConnection();
    13. // 第二步 创建statement对象
    14. Statement stmt =conn.createStatement();
    15. // 第三步 执行mysql语句
    16. String sql="select *from student";
    17. ResultSet rs =stmt.executeQuery(sql);
    18. //第四步 遍历集合 循环遍历
    19. while(rs.next()) {
    20. int stuId=rs.getInt("stuId");
    21. String stuName=rs.getString("stuName");
    22. String stuSex=rs.getString("stuSex");
    23. int stuAge=rs.getInt("stuAge");
    24. System.out.println(stuId+"---------"+stuName+"-----------"+stuSex+"---------"+stuAge);
    25. }
    26. //关闭数据库连接
    27. DBUtil.getClose(conn);
    28. }
    29. }

     

     


    5 完成第二个功能 在数据库的表中增加一条记录:

    1. // 第一步 建立链接 Connection conn = DBUtil.getConnection();
    2. // 第二步 创建statement对象 Statement stmt =conn.createStatement();
    3. // 第三步 执行mysql语句
      //增加语句
      String sql=" INSERT INTO `students`.`student`(`stuId`, `stuName`, `stuSex`, `stuAge`)" +
            " VALUES (1006, 'I LOVE YOU ', '女', 520)";
    4. //4  执行语句
      int count=   stmt.executeUpdate(sql);
      if(count>0) {
         System.out.println("学生插入成功");
      }else {
         System.out.println("in the end");
      }
    1. package Com.Jdbc.Java;
    2. import java.sql.Connection;
    3. import java.sql.SQLException;
    4. import java.sql.Statement;
    5. import Com.Jdbc.Util.DBUtil;
    6. public class Test1 {
    7. /**
    8. * 方案一:利用java删除数据库中的数据
    9. * @param args
    10. * @throws SQLException
    11. */
    12. public static void main(String[] args) throws SQLException {
    13. Connection conn=DBUtil.getConnection();
    14. System.out.println(conn);
    15. //获取 statement对象
    16. Statement stmt =conn.createStatement();
    17. //增加语句
    18. String sql=" INSERT INTO `students`.`student`(`stuId`, `stuName`, `stuSex`, `stuAge`)" +
    19. " VALUES (1006, 'I LOVE YOU ', '女', 520)";
    20. //4 执行语句
    21. int count= stmt.executeUpdate(sql);
    22. if(count>0) {
    23. System.out.println("学生插入成功");
    24. }else {
    25. System.out.println("in the end");
    26. }
    27. DBUtil.getClose(conn);
    28. }
    29. }

     

     6 完成第三个功能 修改字段 修改功能  将性别改为女人

    1. // 第一步 建立链接 Connection conn = DBUtil.getConnection();
    2. // 第二步 创建statement对象 Statement stmt =conn.createStatement();
    3. String sql="update student set stuSex='男' ";
      stmt.executeLargeUpdate(sql);
    4. System.out.println("数据库中的数据修改成功");
      DBUtil.getClose(conn);
    1. package Com.Jdbc.Java;
    2. import Com.Jdbc.Util.DBUtil;
    3. import java.sql.Connection;
    4. import java.sql.SQLException;
    5. import java.sql.Statement;
    6. /**
    7. * 修改语句
    8. */
    9. public class Test2 {
    10. /**
    11. * 修改数据利用就Java代码修改数据
    12. * @param args
    13. * @throws SQLException
    14. */
    15. public static void main(String[] args) throws SQLException {
    16. // 建立链接
    17. Connection conn = DBUtil.getConnection();
    18. //
    19. Statement stmt =conn.createStatement();
    20. String sql="update student set stuSex='男' ";
    21. stmt.executeLargeUpdate(sql);
    22. System.out.println("数据库中的数据修改成功");
    23. DBUtil.getClose(conn);
    24. }
    25. }

     

     

     7 完成第四个功能删除功能:

    1. // 第一步 建立链接 Connection conn = DBUtil.getConnection();
    2. // 第二步 创建statement对象 Statement stmt =conn.createStatement();
    3. String sql = "delete from `student` where stuId=1002"; //删除语句
    4. //4  执行语句
      int count = stmt.executeUpdate(sql);
      if (count > 0) {
          System.out.println("学生删除成功");
      }
    1. package Com.Jdbc.Java;
    2. import Com.Jdbc.Util.DBUtil;
    3. import java.sql.Connection;
    4. import java.sql.SQLException;
    5. import java.sql.Statement;
    6. /**
    7. * 删除语句
    8. */
    9. public class Test4 {
    10. public static void main(String[] args) throws SQLException {
    11. Connection conn = DBUtil.getConnection();
    12. System.out.println(conn);
    13. //获取 statement对象
    14. Statement stmt = conn.createStatement();
    15. //增加
    16. String sql = "delete from `student` where stuId=1002";
    17. ;
    18. //4 执行语句
    19. int count = stmt.executeUpdate(sql);
    20. if (count > 0) {
    21. System.out.println("学生删除成功");
    22. }
    23. }
    24. }

     

     

    8下面是升级版的:

    1. package Com.Jdbc2;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.PreparedStatement;
    5. import java.sql.ResultSet;
    6. import java.sql.SQLException;
    7. import java.util.ArrayList;
    8. import java.util.HashMap;
    9. import java.util.List;
    10. import java.util.Map;
    11. public class Test{
    12. public Connection con=null;
    13. /**
    14. * 定义方法,用于连接数据库
    15. */
    16. public void getConnection() {
    17. //1.加载插件
    18. try {
    19. Class.forName("com.mysql.jdbc.Driver");
    20. //2.准备连接数据的信息:要连接的数据库的地址 用户名 密码
    21. String url="jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimeZone=UTC";
    22. String username="root";
    23. String password="123456";
    24. //使用设备管理器类根据提供的信息连接数据库
    25. con=DriverManager.getConnection(url, username, password);
    26. } catch (Exception e) {
    27. e.printStackTrace();
    28. }
    29. }
    30. /**
    31. * 增加一条的数据记录
    32. */
    33. @org.junit.Test
    34. public void test1() {
    35. //添加数据
    36. getConnection();
    37. //判断是否连接成功
    38. if (con!=null) {
    39. //准备要执行的添加sql语句
    40. //在jdbc连接数据库中,使用占位符?
    41. String sql="insert into tb_students(name,age) VALUES(?,?)";
    42. //准备执行sql语句
    43. try {
    44. PreparedStatement ps=con.prepareStatement(sql);
    45. ps.setString(1, "少年的你");
    46. ps.setInt(2, 22);
    47. int count=ps.executeUpdate();
    48. if (count>0) {
    49. System.out.println("添加成功");
    50. }
    51. //执行完成之后,要断开数据库连接
    52. ps.close();
    53. con.close();
    54. } catch (SQLException e) {
    55. e.printStackTrace();
    56. }
    57. }
    58. }
    59. /**
    60. * 修改一条数据内容
    61. */
    62. @org.junit.Test
    63. public void test2() {
    64. //修改语句
    65. getConnection();
    66. if (con!=null) {
    67. String sql="update tb_students set age=? where id=?";
    68. try {
    69. PreparedStatement ps=con.prepareStatement(sql);
    70. ps.setInt(1, 10023);
    71. ps.setInt(2, 122);
    72. int i=ps.executeUpdate();
    73. if (i>0) {
    74. System.out.println("修改成功");
    75. }
    76. ps.close();
    77. con.close();
    78. } catch (SQLException e) {
    79. e.printStackTrace();
    80. }
    81. }
    82. }
    83. /**
    84. * 删除一条数据内容
    85. */
    86. @org.junit.Test
    87. public void test3() {
    88. //删除语句
    89. getConnection();
    90. if (con!=null) {
    91. String sql="delete from tb_students where id=?";
    92. try {
    93. PreparedStatement ps=con.prepareStatement(sql);
    94. ps.setInt(1, 1);
    95. int i=ps.executeUpdate();
    96. if (i>0) {
    97. System.out.println("删除成功");
    98. }
    99. ps.close();
    100. con.close();
    101. } catch (SQLException e) {
    102. e.printStackTrace();
    103. }
    104. }
    105. }
    106. /**
    107. * 查询的内容
    108. */
    109. @org.junit.Test
    110. public void test4() {
    111. //查询语句
    112. //根据id=1查询学生的信息
    113. getConnection();
    114. if (con!=null) {
    115. String sql="select * from tb_students where id=?";
    116. try {
    117. PreparedStatement ps=con.prepareStatement(sql);
    118. ps.setInt(1, 1);
    119. ResultSet rs=ps.executeQuery();
    120. //因为查询出来的数据是一张表的结构,游标默认停留在第一行,是字段名
    121. //所有需要获得的数据要从第二行开始
    122. if (rs.next()) {
    123. int id=rs.getInt(1);
    124. String name=rs.getString(2);
    125. int age=rs.getInt(3);
    126. System.out.println(id+"--"+name+"--"+age);
    127. }
    128. //断开连接
    129. rs.close();
    130. ps.close();
    131. con.close();
    132. } catch (SQLException e) {
    133. e.printStackTrace();
    134. }
    135. }
    136. }
    137. /**
    138. * 修改的数据内容
    139. */
    140. @org.junit.Test
    141. public void test5() {
    142. List<Map<String, Object>> oList=new ArrayList<Map<String,Object>>();
    143. //查询多行数据
    144. getConnection();
    145. if (con!=null) {
    146. String sql="select * from tb_student";
    147. try {
    148. PreparedStatement ps=con.prepareStatement(sql);
    149. ResultSet rs=ps.executeQuery();
    150. while (rs.next()) {
    151. int id=rs.getInt(1);//4
    152. String name=rs.getString(2);//王六
    153. int age=rs.getInt(3);//25
    154. Map<String, Object> oMap=new HashMap<String, Object>();
    155. oMap.put("id", id);
    156. oMap.put("name", name);
    157. oMap.put("age", age);
    158. oList.add(oMap);
    159. }
    160. //断开连接 colse()
    161. rs.close();
    162. ps.close();
    163. con.close();
    164. } catch (SQLException e) {
    165. e.printStackTrace();
    166. }
    167. }
    168. //循环遍历集合,显示所有数据
    169. for (Map<String, Object> map : oList) {
    170. System.out.println(map);
    171. }
    172. //jdk1.8的新特性
    173. List<String> o=new ArrayList<String>();
    174. o.add("abc");
    175. o.add("123");
    176. o.add("456");
    177. o.add("789");
    178. //labdam表达式
    179. o.forEach(s->System.out.println(s));
    180. }
    181. }

    其实关于数据库的增删改查还有一些方案要用到的架包有如下:下面的内容属于java的框架开发。

     

     

    这些内容我博客上都有介绍:JdbcTemplate   SSM框架开发  采用配置文件   接口+配置文件  注解开发  利用的框架 是MyBatis 最新出来MyBatis加强版 MyBatis-plus框架 在此之前要学习 Maven  和SpringBoot框架。感兴趣的可以看以下链接:下面属于扩展内容操作JDBC对数据库的增删改查:简称CRUP

    2022年6月18号前后端数据操作案例八:在解决问题的道路上思考问题。_风雪夜花的博客-CSDN博客_后端业务逻辑案例2022年6月18号前后端数据操作案例七:在解决问题的道路上思考问题-在问题中提升自己的思维能力。采用的知识点SSM Ajax Json Mysql操作单张表的功能查询修改https://blog.csdn.net/qq_56248592/article/details/125344684?spm=1001.2014.3001.5502

    上面的博客采用的是Ajax+Json解析开发

    2022年0526号前后端数据操作案例三:在解决问题的道路上思考问题。_风雪夜花的博客-CSDN博客_datalist增删改查目录Ajax+Json+Mvc+JavaScript+Jquery项目实战对数据的增删改查:JsoN第四课.第一部分回顾2022年五月26号Ajax+Json+Mvc+JdbcTemplate+Servlect+Html+JavaScript+Jquery+Mysql对本项目的数据进行修改数据内容:修改功能如何实现。_@Live@And@Learn@#的博客-CSDN博客Sql语句查 第一个功能:查询teacher1表中的所有数据第二 各功能增加一条记录到数据库中去 ......https://blog.csdn.net/qq_56248592/article/details/125012649?spm=1001.2014.3001.5502

    上面的博客采用的是JdbcTemplate+Servlect的开发 对数据的增删改查

    2022年5月20号对数据库的操作课时一:_风雪夜花的博客-CSDN博客022年5月20号博客内容操作(方案二利用:Java的方式对数据的IDUS)c3p0-config框架增删改查。https://blog.csdn.net/qq_56248592/article/details/124888746?spm=1001.2014.3001.5502

    上面博客是对数据库操作方案一

    2022年5月20号对数据库的操作课时二:_风雪夜花的博客-CSDN博客2022年5月20号博客内容操作(方案二利用:对数据的IDUS)JdbcTemplate框增删改查.这里利JdbcTemplate框架对单张表的增删改查操作。采用的知识点是Service Mvc三层架构 jsp网络编程.第一点:思考什么是Mvc:这里采用的是架包+Mvc三层架构。前提是要学过jsp Service 的基础知识。第二点:思考为什么要学习ssm框架。本案例在上个学期的基础上.SpringMvc:控制层。==============>ServiceSpring:业务逻..https://blog.csdn.net/qq_56248592/article/details/124888897?spm=1001.2014.3001.5502

    上面博客是对数据库操作方案二

    2022年5月20号对数据库的操作课时三:_风雪夜花的博客-CSDN博客2022年5月20号博客内容操作(方案四利用:对数据的IDUS)Spring框架在配置文件中操作数据库的增删改查.driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8user=rootpassword=123456<?xml version="1.0" encoding="UTF-8" ?&..https://blog.csdn.net/qq_56248592/article/details/124889404?spm=1001.2014.3001.5502

    上面博客是对数据库操作方案三

    2022年5月20号对数据库的操作课时四:_风雪夜花的博客-CSDN博客package Com.Book.Dao;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;import java.util.List;import java.util.Map;/** *.https://blog.csdn.net/qq_56248592/article/details/124889518?spm=1001.2014.3001.5502

    上面博客是对数据库操作方案四

    2022年5月20号对数据库的操作课时五:_风雪夜花的博客-CSDN博客//数据库的连接池driver=com.mysql.cj.jdbc.Driver//数据库的地址url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8//数据库的姓名user=root//数据库的密码password=123456<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration .https://blog.csdn.net/qq_56248592/article/details/124889553?spm=1001.2014.3001.5502

    上面博客是对数据库操作方案五

  • 相关阅读:
    Flutter的Invalid use of a private type in a public API警告
    决策树的优缺点
    React 中事件的类型定义
    SpringBoot-Rest 风格请求处理
    Go 原生插件使用问题全解析
    ElasticSerach+MongoDB:实现文章检索历史功能
    docker-compose快速搭建Zookeeper集群
    【SQL屠夫系列】leetcode-176. 第二高的薪水
    电商rpa是什么意思?跟电商rpi是一个意思吗?
    go数组array
  • 原文地址:https://blog.csdn.net/qq_56248592/article/details/125625334
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号