代码编织梦想


  学习的时间过得好快,一周都很忙,这周的博客还没有输出,所以抽点时间继续打输出了。刚说完数据库,就该说java是怎么操作数据库的,包括连接和CRUD。在这里先说一下java连接数据库的几种方式。

在此说明:
我的数据库账号是root,密码123465。本篇博客中用的都是test数据库。

下面简述一下JDBC技术:

1. 数据的持久化

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

  • 持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
      

2. Java中的数据存储技术

在Java中,数据库存取技术可分为如下几类:

  • JDBC直接访问数据库

  • JDO (Java Data Object )技术

  • 第三方O/R工具,如Hibernate, Mybatis 等

注:JDBC是java访问数据库的基石,JDO, Hibernate等只是更好的封装了JDBC。
  

3. JDBC介绍

  • JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这个类库可以以一种标准的方法、方便地访问数据库资源。
  • JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
  • JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

  

4. JDBC体系结构

JDBC接口(API)包括两个层次:

  • 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
  • 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。

JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。

不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。 ————面向接口编程

5. JDBC程序编写步骤

在这里插入图片描述

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

    

下面就开始介绍怎么连接MySQL数据库

要素一:Driver接口实现类

1. Driver接口介绍

  java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。

在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。

  1. Oracle的驱动:oracle.jdbc.driver.OracleDriver
  2. mySql的驱动: com.mysql.jdbc.Driver

将上述jar包拷贝到Java工程的一个目录中,习惯上新建一个lib文件夹。

在这里插入图片描述

在驱动jar上右键–>Build Path–>Add to Build Path

在这里插入图片描述

注意:如果是Dynamic Web Project(动态的web项目)话,则是把驱动jar放到WebContent(有的开发工具叫WebRoot)目录中的WEB-INF目录中的lib目录下即可

在这里插入图片描述
  

2. 加载与注册JDBC驱动

加载驱动:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名

  • Class.forName(“com.mysql.jdbc.Driver”);

注册驱动:DriverManager 类是驱动程序管理器类,负责管理驱动程序

  • 使用DriverManager.registerDriver(com.mysql.jdbc.Driver)来注册驱动

  • 通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会调用 DriverManager.registerDriver() 方法来注册自身的一个实例。下图是MySQL的Driver实现类的源码:

在这里插入图片描述

要素二:URL

  • JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。

  • JDBC URL的标准由三部分组成,各部分间用冒号分隔。

    • jdbc:子协议:子名称
    • 协议:JDBC URL中的协议总是jdbc
    • 子协议:子协议用于标识一个数据库驱动程序
    • 子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号,数据库名
  • 举例:

在这里插入图片描述

几种常用数据库的 JDBC URL

  • MySQL的连接URL编写方式:

    • jdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数=值&参数=值
    • jdbc:mysql://localhost:3306/test
    • jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8**(如果JDBC程序与服务器端的字符集不一致,会导致乱码,那么可以通过参数指定服务器端的字符集)
    • jdbc:mysql://localhost:3306/test?user=root&password=123456
  • Oracle 9i的连接URL编写方式:

    • jdbc:oracle:thin:@主机名称:oracle服务端口号:数据库名称
    • jdbc:oracle:thin:@localhost:1521:test
  • SQLServer的连接URL编写方式:

    • jdbc:sqlserver://主机名称:sqlserver服务端口号:DatabaseName=数据库名称

    • jdbc:sqlserver://localhost:1433:DatabaseName=test

要素三:用户名和密码

  • user,password可以用“属性名=属性值”方式告诉数据库
  • 可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接

实现连接数据的几种方式:

连接方式一:
	@Test
    public void testConnection1() {
        try {
            //1.提供java.sql.Driver接口实现类的对象
            Driver driver = null;
            driver = new com.mysql.jdbc.Driver();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "123456");

            //4.调用driver的connect(),获取连接
            Connection conn = driver.connect(url, info);
            System.out.println(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

说明:上述代码中显式出现了第三方数据库的API

连接方式二:
	@Test
    public void testConnection2() {
        try {
            //1.实例化Driver
            String className = "com.mysql.jdbc.Driver";
            Class clazz = Class.forName(className);
            Driver driver = (Driver) clazz.newInstance();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "123456");

            //4.调用driver的connect(),获取连接
            Connection conn = driver.connect(url, info);
            System.out.println(conn);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

说明:相较于方式一,这里使用反射实例化Driver,不在代码中体现第三方数据库的API。体现了面向接口编程思想。

连接方式三:
	@Test
    public void testConnection3() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            String driverName = "com.mysql.jdbc.Driver";

            //2.实例化Driver
            Class clazz = Class.forName(driverName);
            Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            DriverManager.registerDriver(driver);
            //4.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

说明:使用DriverManager实现数据库的连接。体会获取连接必要的4个基本要素。

连接方式四:
	@Test
    public void testConnection4() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            String driverName = "com.mysql.jdbc.Driver";

            //2.加载驱动 (①实例化Driver ②注册驱动)
            Class.forName(driverName);
            //Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            //DriverManager.registerDriver(driver);
            /*
            可以注释掉上述代码的原因,是因为在mysql的Driver类中声明有:
            static {
                try {
                    DriverManager.registerDriver(new Driver());
                } catch (SQLException var1) {
                    throw new RuntimeException("Can't register driver!");
                }
            }
             */
           //3.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

说明:不必显式的注册驱动了。因为在DriverManager的源码中已经存在静态代码块,实现了驱动的注册。

连接方式五(常用):

之前在集合不是介绍一个properties类,在这就用的properties属性文件来连接数据库。

	@Test
    public  void testConnection5() throws Exception {
    	//1.加载配置文件
        InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties pros = new Properties();
        pros.load(is);
        
        //2.读取配置信息
        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");

        //3.加载驱动
        Class.forName(driverClass);

        //4.获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);

    }

其中,配置文件声明在工程的src目录下:【jdbc.properties】

user=root
password=123456
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver

说明:使用配置文件的方式保存配置信息,在代码中加载配置文件

使用配置文件的好处:
①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码。
②如果修改了配置信息,省去重新编译的过程。


注意:
如果上述都正确还是连接不上数据库可能是MySQL服务没有开启,需要把MySQL服务打开。
右键我的电脑->服务和应用程序 or 任务管理器->服务
在这里插入图片描述在这里插入图片描述

今天就说到这,下次写Java操作数据库(CRUD)。有什么问题欢迎大家一起交流学习。

mysql驱动包:
链接:https://pan.baidu.com/s/1cULIRWPknCFpLNYOvwQUAA
提取码:id2y

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zxdspaopao/article/details/102831780

jdbc的实现步骤_麦田里的守望的博客-爱代码爱编程_jdbc的实现步骤

一、JDBC的实现步骤:  1、加载驱动程序       Class.forName(DriverClass);  2、使用驱动管理类,获得数据库连接     Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);     URL格式: jdbc:数

activemq通过jdbc持久化消息步骤windows端(mysql)_bravett的博客-爱代码爱编程

前记:目前学习还比较杂乱,还未找到系统化地学习ActiveMq的方法。在网上看到消息持久化的demo,了解了一下,在此记录。 一、目前ActiveMq支持的持久化方法 分别是持久化为文件,MYSql,Oracle。 本文对Windows端mysql的消息持久化进行一次纪录 二、配置activemq.xml 首先,在windows下,activem

jdbc 5种常见数据库连接的获取-爱代码爱编程

2019独角兽企业重金招聘Python工程师标准>>> JDBC在开发中很少直接使用(持久化层有许多杰出的框架,如:Hibernate、mybatis...),但这又是Java程序员必须清楚的基础知识,下面是一些知识的基类,方便以后复习时使用。 Java对数据库的操作主要以下几步 1)加载驱动,获取数据

jdbc-简介_程序小白-m的博客-爱代码爱编程_jdbc基于什么协议

一、简述 JDBC(Java Data Base Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 JD

Java 数据持久化系列之JDBC-爱代码爱编程

前段时间小冰在工作中遇到了一系列关于数据持久化的问题,在排查问题时发现自己对 Java 后端的数据持久化框架的原理都不太了解,只有不断试错,因此走了很多弯路。于是下定决心,集中精力学习了持久化相关框架的原理和实现,总结出这个系列。 上图是我根据相关源码和网上资料总结的有关 Java 数据持久化的架构图(只代表本人想法,如有问题,欢迎留言指出)。最下层

Java持久化数据的方式——JDBC&ORM&JPA(深度好文)-爱代码爱编程

Java持久化数据的方式——JDBC&ORM&JPA JDBC什么是JDBC?有了JDBC之后的好处JDBC完成用户的CURDORM什么是ORM?ORM思想JPA规范JPA完成客户的CURD创建Maven工程导入依赖sql建表语句Customer实体类JPA的核心配置文件CURD代码JPA APIPersistenceEntityM

JDBC学习笔记-爱代码爱编程

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

JDBC——(4)获取数据库连接——方式三-爱代码爱编程

JDBC——(1)JDBC概述JDBC——(2)数据持久化的含义和Java中的数据存储技术JDBC——(3) JDBC程序操作和访问数据库步骤JDBC——(4)获取数据库连接JDBC——(4)获取数据库连接——方式一JDBC——(4)获取数据库连接——方式二JDBC——(4)获取数据库连接——方式三JDBC——(4)获取数据库连接——方式四JDBC——(4

JDBC——(4)获取数据库连接——方式四-爱代码爱编程

JDBC——(1)JDBC概述JDBC——(2)数据持久化的含义和Java中的数据存储技术JDBC——(3) JDBC程序操作和访问数据库步骤JDBC——(4)获取数据库连接JDBC——(4)获取数据库连接——方式一JDBC——(4)获取数据库连接——方式二JDBC——(4)获取数据库连接——方式三JDBC——(4)获取数据库连接——方式四JDBC——(4

jdbc和数据库持久化操作-爱代码爱编程

1.建立连接池实现程序员与JDBC-数据库之间信息的交互 在IDEA新建一个持续类的包,里面放接口,再在里面在新建一个具体的实现包,里面放代码,目的是为了防止以后更换数据库时丢失代码。进入http://mvnrepository.com/拷贝阿里巴巴德鲁伊连接池mysql驱动包(需要对应你使用数据库的版本,不然会出错)刷新porn.xml后出现以下三个,

JDBC数据库连接池(持久化操作)-爱代码爱编程

当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。 1.在idea项目中,新建一个持续类的persiste包,在包下新建一个impl包,用于放实现类代码,在实现类包下新建连接池——MySqlDbUtil类。 如下图所示: 2.进入mvnreposito

springBoot整合JdbcTemplate进行数据持久化的基本操作-爱代码爱编程

什么是JdbcTemplate? JdbcTemplate是Spring的一部分,是对数据库的操作在jdbc的封装,处理了资源的建立和释放(不需要我们管理连接了),我们只需要提供SQL语句(不需要我们设置参数了)和提取结果(查询时候可以直接返回对应的实体类),使JDBC更加易于使用。 JdbcTemplate使用spring的注入功能,把DataSour

持久化和JDBC基本操作-爱代码爱编程

1.什么是持久化 持久化(persistence):把数据保存到可掉电式存储设备(例如:硬盘)中以供之后使用. 持久化的过程大多是通过各种关系型数据库来完成,在java中,数据库存取技术只能通过JDBC来访问数据库 JDBC访问数据库的形式主要有两种: 1.直接使用JDBC的API去访问数据库服务器. 2.间接地使用JDBC的API去访问数据库服务器.

JDBC学习1---JDBC概述-爱代码爱编程

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

JDBC概述:数据的持久化、JDBC程序编写步骤JDBC介绍Java中的数据存储技术-爱代码爱编程

文章目录 1. 数据的持久化2. Java中的数据存储技术3. JDBC介绍4. JDBC程序编写步骤 1. 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。持久化

jdbc编程--jdbc基本操作步骤_子夜夏歌的博客-爱代码爱编程

JDBC即java数据库互连,是java语言和数据库之间独立于数据库的连接标准API,JDBC从根本上来说是一种规范,具体的实现需要依赖于具体数据库生产商提供jar包【驱动】,提供了统一的接口用于访问不同的底层数据库,允许使用java语言编写不同的应用程序以访问数据库。 1.添加驱动 每个JDBC应用程序至少需要有一个JDBC驱动程序,JDBC驱动是D

数据库持久化+jdbc数据库连接_马小屑的博客-爱代码爱编程

数据持久化 数据持久化就是 将内存中的数据模型转换为存储模型 ,以及 将存储模型转换为内存中的数据模型 的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。 瞬时状态 保存在内存的程序数据,程序退出,数据就消失了 持久状态 保存在磁盘上的程序数据,程序退出后依然存在 数据持久化技术 Hibernate、J

【性能测试】jmeter—jdbc协议_chosen1_ln的博客-爱代码爱编程

一、jdbc是什么 jdbc:(JavaDataBaseConnectivity)是一种用于执行SQL语句的JAVA API。调用数据库时,需要使用jar + 数据库信息jmeter是用java开发,可以直接执行java代

jdbc 详解_jdbc可以屏蔽数据库的差异性吗_it__learning的博客-爱代码爱编程

一、JDBC 简介 JDBC(Java DataBase Connectivity)就是 Java 数据库连接,说白了就是用 Java 语言来操作数据库。原来我们操作数据库是在控制台使用 SQL 语句来操作数据库,JDBC

mybatis快速入门到精通,附加面试总结-爱代码爱编程

MyBatis中文网 简介 什么是MyBatis? 1、MyBatis 是一款优秀的持久层框架 2、它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 3、MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plai