Mysql数据库内置许多接口,其中jdbc就是为java语言准备的接口。eclipse版
连接方法有多种,我会由浅入深的讲解
前置工作:
1.下载数据库连接驱动,根据自己的版本下载相应的驱动
mysql-connector-java-8.0.17.jar
2.在eclipse中导入jar包
1.建立一个project工程,在工程中建立一个文件夹lib用来存放jar包,将jar包复制到lib下
2.选中工程右击,BuildPath->Configure Build Path
3.选择Libraries->Modulepath->右边的Add JARs
4.在其中找到工程下的lib文件里的jar包导入进去
连接数据库
分析:要想进入数据库,我们首先需要知道数据库在哪,连接数据库中的哪个database(url)。其次,需要连接数据库的账户密码(user和password)。最后使用这些信息,调用Driver驱动获取数据库连接。
1.使用最原始的方式获取数据库连接
步骤:获取Driver驱动,将用户名和密码封装在properties文件中,调用Driver的connect方法获取数据库连接
//方式一 使用最原始的方式获取数据库连接
public void getConnection1() throws Exception {
Driver driver=new Driver();
/**
* jdbc:mysql 协议
* localhost:ip地址
* 3306 数据库名
* characterEncoding 设置字符集
* serverTimezone 设置时区
*/
String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
//将用户名和密码封装在properties配置文件中
Properties info=new Properties();
info.setProperty("user", "user");
info.setProperty("password", "123456");
//将参数导入dirver.connect函数中获取连接
Connection conn=driver.connect(url, info);
//输出数据库连接
System.out.println(conn);
}
此为mysql驱动8.0版本,若mysql驱动版本为8.0之前,将url改为jdbc:mysql://localhost:3306/test即可。
2.使用反射的方式获取Driver类来获取数据库连接
步骤:使用反射,调用类加载器生成Driver对象,将用户名和密码封装在properties文件中,调用Driver的connect方法获取数据库连接。
区别:使用反射生成Driver对象
//方式二:使用反射获取数据库连接
public void getConnection2() throws Exception {
//使用反射构造driver
Class clazz=Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver=(Driver)clazz.getDeclaredConstructor().newInstance();
String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
//将用户名和密码封装在properties配置文件中
Properties info=new Properties();
info.setProperty("user", "user");
info.setProperty("password", "123456");
//将参数导入dirver.connect函数中获取连接
Connection conn=driver.connect(url, info);
//输出数据库连接
System.out.println(conn);
}
PS:此为mysql8.0驱动,若为8.0之前将com.mysql.cj.jdbc.Driver改为com.mysql.jdbc.Driver后续也一样更改
3.使用DriverManager类替换Driver类获取连接
//方式三:使用DriverManager替换Driver
public void getConnection3() throws Exception {
//此方法在加载时就以及帮我们省略了加载com.mysql.cj.jdbc.Driver自动创建了Driver在DriverManager类内部
/**
* 在DriverManager内部会加载类并生成driver
* 省略语句:
* Class clazz=Class.forName("com.mysql.cj.jdbc.Driver");
* Driver driver=(Driver)clazz.getDeclaredConstructor().newInstance();
* 它是自动选择Driver类来加载,也可以自己指定。
*/
String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
Connection conn=DriverManager.getConnection(url,"user","123456");
System.out.println(conn);
}
原理:DriverManager类封装了一个Driver对象,并且在类加载时,自动加载Driver的类,这样我们就不用自己写Driver对象。
PS:加载的Driver类对象可以自动加载,也可以自己指定加载。在类加载前,自己加载Driver类,它就不会再自动加载(详细可见DriverManager类源码)
4.将所有的配置信息写入配置文件中
好处:不用修改java代码,不懂java代码也可以修改数据库连接账户,密码,数据库。
步骤:在src文件夹下建立一个properties文件。new->file->filename 为xxx.properties
在文件中写入相应的配置信息
user=user
password=123456
url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=TRUE
driverClass=com.mysql.cj.jdbc.Driver
调用类加载器加载文件中的内容,使用properties存加载文件的内容。
取出类加载器中的内容,获取连接
//方法四:将所有的配置信息写入配置文件中,这样不懂代码的人也可以完成更改
public void getConnection4() throws Exception {
//调用加载器加载文件中的内容
InputStream is=getClass().getClassLoader().getResourceAsStream("jdbc.properties");
//使用properties存加载文件中的内容
Properties ps=new Properties();
ps.load(is);
//取出所有内容
String user=ps.getProperty("user");
String url=ps.getProperty("url");
String password=ps.getProperty("password");
String driverClass=ps.getProperty("driverClass");
//加载Driver类(可省)
Class.forName(driverClass);
//获取Connection连接
Connection conn=DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
使用数据库连接池获取连接
意义:每名用户调用数据库时,都需要重新建立一条连接,使用完后将连接销毁。我们是否可以创建一个池子,里面存放这一些连接,当用户需要时,从连接池中获取连接,当用户不需要后,将连接放回池中,供他人使用。这就时数据库连接池
接下来我们使用行业内较好的阿里巴巴druid德鲁伊连接池来控制连接
1.下载druid连接池jar包 druid-1.1.10.jar
2.将jar包导入当前项目的Libraries中
使用代码获取连接
我们使用配置文件的方法获取数据库连接池
创建druid.properties怕配置文件
url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=TRUE
username=user
password=123456
driverClassName=com.mysql.cj.jdbc.Driver
注意:这里的用户名为username而不是之前的user
Driver类为driverClassName。这是阿里巴巴定义的。
步骤:调用类加载器加载文件中的内容,获取数据库连接池,从连接池中调出一条连接。
//方法五:使用阿里巴巴的德鲁伊druid数据库连接池技术
public void getConnection5() throws Exception {
//调用类加载器加载文件中的内容
InputStream is=getClass().getClassLoader().getResourceAsStream("druid.properties");
Properties ps=new Properties();
ps.load(is);
//获取数据库连接池
DataSource dataSource=DruidDataSourceFactory.createDataSource(ps);
//从连接池中调出一条连接
Connection conn=dataSource.getConnection();
System.out.println(conn);
}
PS:阿里巴巴数据库连接池中默认的连接池中连接的数量为10
上述操作可以获取连接,若想测试自己是否获取连接,可打印自己的连接
若控制台中未报错,出现com.mysql.cj.jdbc.ConnectionImpl@【地址】则连接正确