目录

一.概述

1.JDBC概述

2.JDBC编写步骤

二.JDBC数据库连接获取方式


传说中你为爱甘心被搁浅~

以前学过,现在相当于系统复习,加油哦!

一.概述

1.JDBC概述

1.1 数据的持久化
  • 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成
  • 持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

1.2 Java 中的数据存储技术
  • 在Java中,数据库存取技术可分为如下几类:
  1. JDBC直接访问数据库
  2. JDO (Java Data Object )技术
  3. 第三方O/R工具,如Hibernate, Mybatis 等
  • JDBC是java访问数据库的基石,JDO、Hibernate、MyBatis等只是更好的封装了JDBC。
1.3 JDBC 介绍
  • JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。
  • JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
  • JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
  • 如果没有JDBC,那么Java程序访问数据库时是这样的:

有了 JDBC , Java 程序访问数据库时是这样的:

2.JDBC编写步骤

: ODBC( Open Database Connectivity ,开放式数据库连接 ) ,是微软在 Windows 平台下推出的。使用者在程序中只需要调用 ODBC API ,由 ODBC 驱动程序将调用转换成为对特定的数据库的调用请 求。

二.JDBC数据库连接获取方式

:该课程基于 MySql5 版本,不适用于 MySql8 版本。
准备工作:
  1. 在工程下新建lib文件夹
  2. mysql-connector-java-5.1.47.jar导入到lib目录下

3. 把导入的jar包添加到项目中

4. 新建package及测试类

// 包名
com . bzcxy . jdbc
// 测试类名
Jdbc_Test
5. 在数据库中新建 baizhan 数据库
1 获取数据库连接的方式
注: Connection 的包为 java.sql.Connection
1.1 连接重点
Driver 接口
java.sql.Driver 接口( 这个接口是jdk定义的,但没实现,具体实现由各个厂商来实现 )是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用 的,不同数据库厂商提供不同的实现( 具体实现在上面导入的jar包中 )。
在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类 (java.sql.DriverManager) 去调用这些 Driver 实现。
Oracle 的驱动: oracle.jdbc.driver.OracleDriver
MySql 的驱动: com.mysql.jdbc.Driver

加载与注册 JDBC 驱动
  1. 加载驱动:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名       Class.forName(“com.mysql.jdbc.Driver”);
  2. 注册驱动:DriverManager 类是驱动程序管理器类,负责管理驱动程序
  • 使用DriverManager.registerDriver(com.mysql.jdbc.Driver)来注册驱动
  • 通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会调用 DriverManager.registerDriver() 方法来注册自身的一个实例。

1.2 获取连接
敲代码过程中,看见哪里标红点击那里,然后根据提示补全异常处理什么的。
方式一

如果连接失败,会报错  。

import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;public class Java_Test {public static void main(String[] args) throws SQLException {//驱动程序对象,获取driver实现类的对象Driver driver=new com.mysql.jdbc.Driver();//连接url,参数useSSL=false是关闭SSL安全连接,需要安全证书,配置麻烦,先不考虑String url="jdbc:mysql://localhost:3306/baizhan?useSSL=false";//把数据库的用户名和密码封装在Properties中//用于数据库连接时的属性提交,即相当于Navicat点击连接时填入的用户名,密码等参数Properties info=new Properties();info.setProperty("user","root");//连接时提交的用户名为rootinfo.setProperty("password","root");//连接时提交的密码为rootConnection conn=driver.connect(url,info);System.out.println(conn);}
}

输出:

com.mysql.jdbc.JDBC4Connection@67424e82
方式二 (反射)
对方式一的迭代:在如下的程序中不会出现第三方的 api ,都是Java原生代码,使得程序具有更好的移植性 。
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;public class Java_test1 {public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {//获取driver实现类的对象反射Class clazz=Class.forName("com.mysql.jdbc.Driver");Driver driver=(Driver)clazz.newInstance();String url="jdbc:mysql://localhost:3306/baizhan?useSSL=false";Properties info=new Properties();info.setProperty("user","root");info.setProperty("password","root");Connection conn=driver.connect(url,info);System.out.println(conn);}
}
方式三
使用 DriverManager 替换 Driver
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;public class Java_test2 {public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException, SQLException {//1.反射获取Driver的实现类Class clazz=Class.forName("com.mysql.jdbc.Driver");Driver driver=(Driver) clazz.newInstance();//2.提供另外三个获取连接信息String url="jdbc:mysql://localhost:3306/baizhan?useSSL=false";String user="root";String password="root";//注册驱动DriverManager.registerDriver(driver);//获取连接Connection conn=DriverManager.getConnection(url,user,password);System.out.println(conn);}
}
方式四
MySql 驱动默认会进行驱动的注册。
查看Driver类的源码,可以发现Driver被加载时(因为注册代码写在static块中)会注册当前类对象。所以执行 Class.forName("com.mysql.jdbc.Driver"); 语句时,类被加载,故而Driver对象就被注册到 DriverManager 中了,故而相较第三种方法可以省略几行代码。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class Java_test2 {public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException, SQLException {//方式四Class.forName("com.mysql.jdbc.Driver");String url="jdbc:mysql://localhost:3306/baizhan?useSSL=false";String user="root";String password="root";Connection conn=DriverManager.getConnection(url,user,password);System.out.println(conn);}
}
方式五(推荐)
将数据库链接需要的 4 个基本信息声明在配置文件中,通过读取配置文件的方式。
在src下 创建 jdbc.properties 文件,并写入 ( 注意等号两边无空格 )
user=root
password=root
url=jdbc:mysql://localhost:3306/baizhan
driverClass=com.mysql.jdbc.Driver
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;public class Java_test3 {public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {//1.读取配置文件中4个基本信息InputStream is=Java_test3.class.getClassLoader().getResourceAsStream("jdbc.properties");Properties pros=new Properties();pros.load(is);String user=pros.getProperty("user");String password=pros.getProperty("password");String url=pros.getProperty("url");String driverClass=pros.getProperty("driverClass");//2.加载驱动Class.forName(driverClass);//3.获取链接Connection conn= DriverManager.getConnection(url,user,password);System.out.println(conn);//快捷键sout}
}
优点
1. 实现数据与代码的分离 ,实现了解耦
2. 如果要修改配置文件信息,可以避免程序重打包

遇到了数据库连接不上的bug,我大致浏览了网上的解决办法,最后还是重启电脑了。。。手懒,重启解决80%的问题。。

三天学会JDBC(一)基本操作1(给各位道友拜个早年啦)相关推荐

  1. 三天学会网络爬虫之Day01

    三天学会网络爬虫之Day01 第一章 课程计划 第二章 网络爬虫 2.1. 爬虫入门程序 2.1.1. 环境准备 2.1.2. 环境准备 2.1.3. 加入log4j.properties 2.1.4 ...

  2. 三分钟学会css3中的flexbox布局

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章里我们将学习CSS里flexbox布局的几个最重要的概念,通过学习flexbox布局,你会发现以往遇到的所有的关于布局 ...

  3. javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD

    javaweb学习总结(三十三)--使用JDBC对数据库进行CRUD 一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过 ...

  4. Juniper 210 密码清不掉_三分钟学会如何找回mysql密码

    一.在测试工作中我们肯定会写一些sq查询语句方便我们验证数据是否正确,从而判断当前软件是否存在缺陷,但是查询的过程中肯定需要我们先连接数据库,如果数据库密码忘记我们就无法完成工作,这里就教会大家如何快 ...

  5. 三分钟学会PS小清新调色教程-萧蕊冰

    今天的PS小教程教你三分钟学会PS小清新调色教程.夏天到了,夏天的阳光很大,拍出的照片都会有一种暖色的感觉,那么我们怎么把一张照片调成日式小清新呢?今天我们就来学一个PS小清新调色教程,让你体验一下日 ...

  6. 三小时学会css(菜鸟教程精华版)【中】

    三小时学会css 上期传送门 CSS 盒子模型(Box Model) CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容. 盒模型允许我们在其它元素和周围元素边 ...

  7. 三小时学会css(菜鸟教程精华版)【上】

    三小时学会css 三小时学会HTML传送门 <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

  8. 仅需三步学会使用低代码ThingJS与森数据DIX数据对接

    森数据DIX拥有强大的数据处理能力,内置主流集成插件,分钟级集成IT运维场景和IoT管理场景数据,提升效率.针对非主流系统,支持在线JS脚本编辑,提供灵活.规范的接口,满足低代码个性化需求,轻松实现物 ...

  9. 三天学会网络爬虫之Day03

    三天学会网络爬虫之Day03 第一章 课程计划 第二章 案例扩展 2.1.定时任务. 2.1.1.Cron表达式 2.1.2.Cron测试 2.2.网页去重 2.2.1.去重方案介绍 2.2.2. S ...

最新文章

  1. 异步I/O 设备内核对象,事件内核对象,可提醒I/O 接收I/O通知
  2. poj 3090 Visible Lattice Points(离线打表)
  3. application.properties引用其他文件_金橙智能 | C语言头文件组织与包含原则,你知道吗?...
  4. 怎么把分钟转化成秒_怎么利用抖音短视频引流,手把手教你如何玩转抖音流量...
  5. 强制html元素不随窗口缩小而换行
  6. 【正在完善】CSS 计数器
  7. hive数据库无主键进行去重SQL
  8. SecureCRT连接不成功彻底解决方案
  9. mysql本机ip一般是多少_localhost简介、localhost与 127.0.0.1 及 本机IP 的区别
  10. 基于LayUI使用FullCalendar实现日程管理
  11. 我是怎样把工资从400-4000
  12. 刚写完的 基于微信的房产中介预约看房小程序 毕业设计毕设源码
  13. 抖音创作者信用分:如何提升信用等级,获取更多机会
  14. HotSpot垃圾回收器分类
  15. 校验组织机构代码 合法性
  16. linux 右键没有终端,ubuntu鼠标右键没有打开终端选项解决方法
  17. PowerBI实用技巧:案例一(动态切换坐标轴列值,例如交叉表头、列,图表坐标轴等)
  18. LaTeX之公式及编号
  19. IP第十天笔记 - - - BGP
  20. leetcode每日一题 911在线选举

热门文章

  1. python server酱_程序猿推送利器:使用Python+Server酱打造微信通知推送利器
  2. js移动端刮奖Demo
  3. python实现钟表动画展示turtle库使用
  4. 树莓派 文件服务器,树莓派安装配置NFS文件存储服务器
  5. 关闭所有oracle服务,启动/关闭oracle服务有三种方式
  6. 我对数字化转型的一点浅见
  7. 老司机教你用C语言制作简单实用的撩妹神器!
  8. 为啥我不关心制造企业内部信息化了
  9. charles修改下行参数
  10. NLP-英文文本预处理中的文本清洗内容