JDBC----连接数据库

连接步骤

在连接之前需要先导入mysql驱动包,官网上一搜一大堆,这里不再记录
连接分为两个步骤

  1. 获取驱动程序
  2. 通过驱动程序获取Connection对象

获取驱动程序

需要用到Driver驱动类
即创建Driver驱动类的实例
在这里插入图片描述这里的Driver是一个接口,后面是mysql驱动中对此接口的实现方法


但,一般我们不这样直接在程序中出现第三方的方法(指mysql公司提供的驱动中的Driver实现类),所以我一般用反射获得驱动类在这里插入图片描述


但,我们一般又不用Driver来获得连接对象,我们一般用的是DriverManager类(这是一个类)

在这里插入图片描述
DriverManager类的作用就是管理Driver对象,我们用它的deregisterDriver()方法可以把我们创建的Driver对象交给它管理,然后我们直接使用DriverManager创建对象就行


但,我们一般会把Class.forName("com.mysql.cj.jdbc.Driver")以外的部分全部省略
直接这样写在这里插入图片描述

为什么?
因为在Driver类中有个静态方法,会自动完成以外部分的步骤

这里是Driver类的源码部分在这里插入图片描述
可以看到,里面有一个静态代码块(静态代码块在类被加载的时候会自动执行),里面完成了我们省去的部分,而我们在创建Class.forName("com.mysql.cj.jdbc.Driver")的时候,就等于加载了Driver对象,所以我们可以省去这些步骤,可以直接使用DriverManager类来获取Connection对象

通过驱动程序获取Connection对象

需要用到Driver对象的connect方法或DeiverManager类的静态方法getConnection
还有Properties类的实例

  1. 使用Driver对象的connect方法
    此方法我们一般不用,因为我们用的是DriverManager来管理Driver
    我们要用到的connect方法有两个参数在这里插入图片描述
    第一个是url,第二个是包含mysql用户的账号和密码的Properties的对象
    Properties 继承于 Hashtable,表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。
    HashTable实现了Map接口,所以Properties也是键——值这样的存储方式,可以使用PropertiessetProperty(String key, String value)getProperty(String key)方法来设置键值和获取值。
    在这里插入图片描述
  2. DeiverManager类的静态方法getConnection
    在这里插入图片描述
    直接DriverManager.getConnection(url, user,password)调用类的静态方法,不要创建对象,需要填入三个参数,分别是url和账户和密码

总结

如上,我们虽然成功创建了连接,但是,我们一般不直接在代码中显示我们的url,账户名称,密码,Driver路径的,这样不方便后期维护,我们一般写入到配置文件中

提升

步骤:
创建配置文件,文件包含所需的配置信息
加载配置文件
Properties得到配置文件中的信息
用配置文件中的信息创建连接

这里面,就多了一个文件的操作部分

创建并读取配置文件

我们这里的读取文件,需要用到Propertiesload(InputStream inStream)方法

void load(InputStream streamIn)

作用:从输入流中读取属性列表(键和元素对),参数就是创建的输入流对象,即,此方法会从输入流中读取键值对。
此处的键值对可以使用空格、等号、冒号等符号分隔
比如:
url=jdbc:mysql://localhost:3306/test
user:root

创建文件

就直接
在这里插入图片描述
文件内容写成键值对形式即可

读取文件

  1. 创建文件流在这里插入图片描述
  2. 获取配置信息在这里插入图片描述

总括

总结上面的,我们可以总结出一个最终方案
把配置信息写入文件
获取配置信息
加载Driver
调用DriverManager.getConnection(url, user,password)方法获得连接对象

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值