当前位置:   article > 正文

jdbc连接mysql8.0.21_Java与数据库连接篇—上

jdbc8.0.21

3f6a4411388a3ad25a26e31837b13e36.png

Java与数据库连接篇

课程内容:

ef92295c3eb20439fb4921dec393d1d8.png

一、什么是JDBC?(What)

JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

Java对外指定一些编程标准,其它数据库服务器厂商按照这个标准,编写对应的实现方案。这样对于Java程序员而言,只需要学习Java的标准即可,不需要了解不同厂商的实现细节。一切操作都是在学习接口开发。按照接口指定的标准完成指定需要完成的业务即可。

二、为什么要使用JDBC?(Why)

  • 为了将数据持久的存储、固化到磁盘上我们需要掌握数据库。
  • 为了通过Java代码完成对于数据的持久存储我们需要学习JDBC。
  • 通过JDBC我们能够以面向接口方式,操作数据库中的数据,更加的方便。
  • 本身Java就是跨平台的,通过Java开发的JDBC应用可以在不同的平台上执行。
  • JDBC为数据库开发提供了标准的API,所以使用JDBC开发的数据库应用也可以跨数据库(要求全部使用标准的SQL)

JDBC和ODBC的区别和联系:

ODBC:

它使用 C 语言接口,是一组对数据库访问的标准API,这些API通过SQL来完成大部分任务,而且它本身也支持SQL语言,支持用户发来的SQL。ODBC定义了访问数据库API的一组规范,这些API独立于形色各异的DBMS和编程语言。

JDBC:

是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层API,它由Java 语言编写的类和接口组成,旨在让各数据库开发商为Java程序员提供标准的数据库API。

常见JDBC驱动:

  • JDBC-ODBC桥(JDBC-ODBC Bridge Driver)
    • 最早实现的JDBC驱动程序,旨在快速推广,将JDBC-API映射为ODBC-API。JDK8中已经移除
  • JDBC API驱动程序(Anative API partly Java technology-enabled Driver)
    • 需要实现本地安装特定的驱动程序,通过转换把Java编写的JDBC-API转换为Native-API,进行数据库操作。
  • 纯Java的数据库中间件驱动程序(Pure Java Driver for Database Middleware)
    • 不需要安装特定的驱动程序,需要在安装数据库管理系统的服务器端安装中间件(Middleware),中间件负责在存取数据时必要的转换操作。就是将JDBC访问转换为数据库无关的http或者是https协议,再有中间件转换为数据库专用的访问指令。
  • 纯Java的JDBC驱动程序(Direct-to-DatabasePureJavaDriver)
    • 目前最流行的JDBC驱动,不需要安装任何附加内容,所有存取数据库的操作都直接由JDBC驱动程序来完成,此类驱动程序能将JDBC调用转换成DBMS专用的网络协议,能够自动识别网络协议下的特殊数据库并能直接创建数据连接。

更多资料添加QQ:1708434248 v:magejava

三、 在那些场景下需要使用JDBC(Where)

Java程序员如果想要和数据库打交道就必须要掌握JDBC。
如果你的业务模型中需要将数据持久化存储就必须掌握JDBC。

四、 如何使用JDBC?(How)

1. JDBC所处的处境?

d4ace048c3c5b662e289035a9f24b4d0.png

2.编写第一个JDBC程序

1) 连接步骤

  1. 1) 手动导入需要连接数据库的jar包
  2. 2) 加载驱动
  3. 3) 创建连接对象
  4. 4) 声明sql语句
  5. 5) 创建处理sql语句对象
  6. 6) 发送sql语句,接收返回结果
  7. 7) 处理结果
  8. 8) 关闭资源连接

2) 导入需要的jar包

连接oracle就导入jdbc的jar包,参照附录到安装对应数据库可以在内部找到jar包;
连接mysql就导入mysql-connector的jar包,到官网下载对应版本jar包,或在maven仓库下载jar包。

3) 编写测试代码

  1. @Test
  2. public void searchOne() {
  3. //提升作用域 方便后期关闭资源
  4. Connection conn = null;
  5. Statement stmt = null;
  6. ResultSet rs = null;
  7. try {
  8. //1.加载驱动
  9. Class.forName("com.mysql.jdbc.Driver");
  10. //2:获取连接对象
  11. conn = DriverManager.getConnection(
  12. "jdbc:mysql://localhost:3306/note",
  13. "root","root");
  14. //3:声明sql语句
  15. String sql = "SELECT * FROM TB_USER WHERE ID = 1";
  16. //4:创建处理对象
  17. stmt = conn.createStatement();
  18. //5:发送sql语句获取结果集(如果是查询操作才存在结果集)
  19. rs = stmt.executeQuery(sql);
  20. //6. 迭代结果集
  21. while(rs.next()) {
  22. //7:分析结果集
  23. System.out.println(rs.getString("name"));
  24. }
  25. } catch (ClassNotFoundException e) {
  26. e.printStackTrace();
  27. } catch (SQLException e) {
  28. e.printStackTrace();
  29. }finally {
  30. //8:关闭资源
  31. try {
  32. if(rs!=null)
  33. rs.close();
  34. if(stmt!=null)
  35. stmt.close();
  36. if(conn!=null)
  37. conn.close();
  38. } catch (SQLException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }

4) 分析第一个程序

A. 为什么要加载驱动?

I. 通过Class.forName("Driver类的路径名");

II.查看Mysql的Driver类

  1. public class Driver extends NonRegisteringDriver implements java.sql.Driver {
  2. //在初始化的时候,就将当前数据库对象的驱动加载到sql的注册中心中去
  3. static {
  4. try {
  5. java.sql.DriverManager.registerDriver(new Driver());
  6. } catch (SQLException E) {
  7. throw new RuntimeException("Can't register driver!");
  8. }
  9. }
  10. }

B.获取连接源码

  1. //获取连接就是会将连接信息包装为Properties
  2. public static Connection getConnection(String url,
  3. String user, String password) throws SQLException {
  4. java.util.Properties info = new java.util.Properties();
  5. if (user != null) {
  6. info.put("user", user);
  7. }
  8. if (password != null) {
  9. info.put("password", password);
  10. }
  11. return (getConnection(url, info, Reflection.getCallerClass()));
  12. }

C.常见对象:

对象名称获取方式用途DriverManager用来管理JDBC驱动的服务类,主要用来获取Connection。ConnectionDriverManager.getConnection(url,name,pwd);代表一个物理连接会话,如果要操作数据库必须先获取数据库连接对象。StatementConnection.createStatement();用于执SQL语句的对象。常见的有Statement、PreparedStatement、CallableStatementResultSet(针对查询)Statement.executQuery(sql);结果集对象,包含了对于访问查询结果的方法。

3. 修改操作

3.1测试用例编写

  1. @Test
  2. public void updateNameById() {
  3. //1:声明用户修改的id
  4. Integer id = 1;
  5. //2:声明修改后的名称
  6. String newName= "大锤";
  7. //3:声明连接对象
  8. Connection conn = null;
  9. Statement stmt = null;
  10. try {
  11. //4:加载驱动
  12. Class.forName("com.mysql.jdbc.Driver");
  13. //5:获取连接对象
  14. conn = DriverManager.getConnection(
  15. "jdbc:mysql://localhost:3306/note",
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/698606
推荐阅读
相关标签
  

闽ICP备14008679号