连接步骤
在连接之前需要先导入mysql驱动包,官网上一搜一大堆,这里不再记录
连接分为两个步骤
- 获取驱动程序
- 通过驱动程序获取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
类的实例
- 使用Driver对象的
connect
方法
此方法我们一般不用,因为我们用的是DriverManager来管理Driver
我们要用到的connect方法有两个参数
第一个是url,第二个是包含mysql用户的账号和密码的Properties的对象
Properties
继承于Hashtable
,表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。
HashTable
实现了Map
接口,所以Properties也是键——值这样的存储方式,可以使用Properties
的setProperty(String key, String value)
和getProperty(String key)
方法来设置键值和获取值。
- DeiverManager类的静态方法
getConnection
直接DriverManager.getConnection(url, user,password)
调用类的静态方法,不要创建对象,需要填入三个参数,分别是url和账户和密码
总结
如上,我们虽然成功创建了连接,但是,我们一般不直接在代码中显示我们的url,账户名称,密码,Driver路径的,这样不方便后期维护,我们一般写入到配置文件中
提升
步骤:
创建配置文件,文件包含所需的配置信息
加载配置文件
用Properties
得到配置文件中的信息
用配置文件中的信息创建连接
这里面,就多了一个文件的操作部分
创建并读取配置文件
我们这里的读取文件,需要用到Properties
的load(InputStream inStream)
方法
void load(InputStream streamIn)
作用:从输入流中读取属性列表(键和元素对),参数就是创建的输入流对象,即,此方法会从输入流中读取键值对。
此处的键值对可以使用空格、等号、冒号等符号分隔
比如:
url=jdbc:mysql://localhost:3306/test
user:root
…
创建文件
就直接
文件内容写成键值对形式即可
读取文件
- 创建文件流
- 获取配置信息
总括
总结上面的,我们可以总结出一个最终方案
把配置信息写入文件
获取配置信息
加载Driver
调用DriverManager.getConnection(url, user,password)方法获得连接对象