概述

Java Database Connectivity(JDBC)直接访问数据库,通用的SQL数据库存取和操作的公共接口,定义访问数据库的标准java类库(java.sql,javax.sql)

JDBC程序编写步骤

说明:

1.创建Connection对象相当于与数据库建立了链接

2.查询与增删改的差别是是否需要结果集,所以查询需要ResultSet对象

获取数据连接

目的:创建Connection对象

buid path

说明:如果只是将jar包复制到Java工程里面去,是无法使用jar包里面的类,因为无法找到jar包,所以build path其实就是添加jar包的路径

驱动下载

1.先导入jar包

File -> Project Structure -> Modules -> 选中要添加build path的项目 -> Dependencies -> 点击右边的小加号 -> 选择JARs or directories -> 选中jar包的目录

Driver注册

获取Driver实现类对象

 //注册 JDBC 驱动
Class.forName("com.mysql.cj.jdbc.Driver");

把Driver类加载到内存中,Driver类中有一段静态代码块(随类的加载而加载)

//Driver类中的静态代码块
static{
try{
java.sql.DriverManager.registerDriver(new Driver());
}catch(SQLException E){
throw new RuntimeException("Can't register driver!");
}
}

所以就不需要手动注册驱动了

//获得该类时自动完成了下面的代码
//加载Driver
Class clazz = Class.forName("com.mysql.jdbc.Driver");
// 获得实例
Driver driver =(Driver)clazz.getDeclaredConstructor().newInstance();
DriverManager.registerDriver(driver); //注册驱动

反射知识复习

Class的实例对应一个运行时类

获取Class实例=获取该类=获取运行时类,调用Class的静态方法forName(String classPath) classPath 包名.类名

java.exe命令对某个字节码文件进行解释运行,相当于将某个字节码文件加载到内存中。此过程称为类的加载.加载到内存中的类,就称为运行时类

创建运行时类的对象,要求

1.调用空参构造器,所以该运行时类必须有空参构造器

2.空参构造器的访问权限要足够

Class<Person> clazz = Person.class;
clazz.getDeclaredConstructor().newInstance();

URL

示例:jdbc:mysql://localhost:3306/test

jdbc:mysql 协议

localhost ip地址

3306 默认mysql端口号

test mysql中的test数据库

注意点:

1.MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。

2.allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥。

3.最后还需要设置时区Asia/Shanghai

创建Connection对象,使用DriverManager的静态方法

//使用的静态方法
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai","root","password");

获取数据连接

 //Mysql8.0以上 - JDBC驱动名
final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
//数据库url
final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
final String USER = "root";
final String PASSWORD = "root";
//加载驱动
Class.forName(JDBC_DRIVER); //可以省略 //获取mysql连接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);

这里的信息应该都写在配置文件中,不应该写在代码块中。通过读取配置文件的方式,获取连接。

这种方式的好处

1.实现数据与代码的分离,实现了解耦

2.如果需要修改配置文件信息,可以避免程序重新打包

//1.以流的方式获取配置信息,默认路径时src下
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String USER = pros.getProperty("user");
String PASSWORD = pros.getProperty("password");
String DB_URL = pros.getProperty("url");
String JDBC_DRIVER = pros.getProperty("jdbc_driver"); //2.注册驱动
Class.forName(JDBC_DRIVER); //3.获取mysql连接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
System.out.println(conn);

JDBC01 获取数据库连接的更多相关文章

  1. <一>获取数据库连接

    一.JDBC_通过Driver接口获取数据库连接 1. Driver是一个接口:数据库厂商必须提供实现的接口,可以从其中 获取数据库连接. 2.JDBC URL由三部分组成,各部分用冒号隔开,格式:j ...

  2. JAVA jdbc获取数据库连接

    JDBC获取数据库连接的帮助类 import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManage ...

  3. 使用DriverManager获取数据库连接的一个小改进

    由于使用DriverManager获取数据库连接时,由于DriverManager实现类中有一段静态代码块,可以直接注册驱动,且可以同时管理多个驱动程序 所以当换数据库连接时需要指定不同的数据库,那么 ...

  4. 使用DriverManager获取数据库连接

    DriverManager 是驱动的管理类 * 1).可以通过重载的getConnection() 方法获取数据库连接,较为方便 * 2).可以同时管理多个驱动程序,若注册了多个数据库连接,则调用ge ...

  5. 通过Driver获取数据库连接

    先看一下文件,在当前包下有一个properties配置文件,在根目录下有一个lib文件夹,里面放的是mySql的驱动jar包 Driver :是一个接口,数据库厂商必须提供实现的接口,能从其中获取数据 ...

  6. JDBC_获取数据库连接

    <span style="font-size:24px;">package src.com.jdbc.java; import java.io.IOException; ...

  7. 获取数据库连接对象Connection

    2018-11-04  19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...

  8. JDBC编程:获取数据库连接

    JDBC(Java Database Connectivity),即Java数据库连接.通过JDBC编程,可以使Java应用程序和数据库进行交互. JDBC驱动的方式有很多种,我们常用的驱动方式为:本 ...

  9. JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接

    1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...

随机推荐

  1. 转载:10G以太网光口与Aurora接口回环实验

    10G以太网光口与高速串行接口的使用越来越普遍,本文拟通过一个简单的回环实验,来说明在常见的接口调试中需要注意的事项.各种Xilinx FPGA接口学习的秘诀:Example Design.欢迎探讨. ...

  2. 第10课 OpenGL 3D世界

    加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游.这一课使用第一课的代码,当然在课程说明中我只介绍改变了代码. 这一课是由Lionel Brits (βtelge ...

  3. (1)Zookeeper在linux环境中搭建集群

    1.简介 ZooKeeper是Apache软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务.同步服务和命名注册.ZooKeeper的架构通过冗余服务实现高可用性.Zookeeper ...

  4. 计算机网络漫谈之IP数据包

    网络层从 网络层 .IP与子网掩码 前前后后我们也说了两次了,IP 这个东西絮絮叨叨的也一直在提.今天我们来解开IP协议的面纱,还记得我们之前在数据链路层说的物理帧的结构吗?就是这样: 其中Head叫 ...

  5. C++ 变量声明 定义 作用域 链接性总结

    变量定义 变量的定义用于为变量分配存储空间,还可以为变量指定初始值.在一个程序中,变量有且仅有一个定义. 变量声明 用于向程序表明变量的类型和名字.程序中变量可以声明多次,但只能定义一次. 变量的类型 ...

  6. Spark中的两种模式

    两种模式 client-了解 cluster模式-开发使用 操作 1.需要Yarn集群 2.历史服务器 3.提交任务的的客户端工具-spark-submit命令 4.待提交的spark任务/程序的字节 ...

  7. [第二章]c++学习笔记5(构造函数和析构函数调用时机)

    示例函数 注:输出并不一定从main函数开始,如全局对象的初始化在main函数前执行,如构造函数中存在输出,则从构造函数的输出开始 此处6被类型转换构造函数的存在转换为临时对象赋值,而在这个过程结束后 ...

  8. Django 小实例S1 简易学生选课管理系统 4 实现登录页面

    Django 小实例S1 简易学生选课管理系统 第4节--实现登录页面 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...

  9. go微服务框架Kratos笔记(一)入门教程

    kratos简介 Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具 本文基于kratos v2.0.3,windows平台,其他系统平台均可借鉴参考 环境搭建 Golang开发 ...

  10. 菜鸡的Java笔记 实践 - java 数组操作

    讲解一个继承的实现思路                要求定义一个数组操作类(Array类),在这个类里面可以进行整型数组的操作,由外部传入数组的大小        ,并且要求实现数据的保存以及数据的 ...