目录
五种原生方式获取数据库连接
五种方式逐步迭代。
五种方式都应先导入mysql的jar包 ,在此使用v8.0.30
获取方式一
直接new出第三方库驱动对象。
//1.获取JDBC驱动对象
Driver driver = new com.mysql.cj.jdbc.Driver();
//2.创建参数url和properties
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();//存储数据库连接的账号密码
info.setProperty("user","***");
info.setProperty("password","***");
//3.创建连接
Connection connect = driver.connect(url, info);
//4.输出连接返回的对象,检查是否连接成功
System.out.println(connect);//连接成功:com.mysql.cj.jdbc.ConnectionImpl@63355449
获取方式二
对方式1的迭代,方式中不存在第三方库(通过反射),提高了可移植性
//1.获取Driver实现类对象 (通过反射)
Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
//2.配置url和properties
String url = "jdbc:mysql://localhost:3306/test";
Properties properties = new Properties();
properties.setProperty("user","***");
properties.setProperty("password","***");
//3.获取连接
Connection connect = driver.connect(url, properties);
//4.输出连接返回的对象,检查是否连接成功
System.out.println(connect);//com.mysql.cj.jdbc.ConnectionImpl@63355449
获取方式三
使用DriverManager来替换Driver。
//1.获取Driver实现类对象 (通过反射)
Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
//2.注册驱动
DriverManager.registerDriver(driver);
//3.声明参数
String url = "jdbc:mysql://localhost:3306/test";
String user = "***";
String password = "***";
//4.获取连接
Connection connect = DriverManager.getConnection(url,user,password);
System.out.println(connect); //com.mysql.cj.jdbc.ConnectionImpl@9353778
获取方式四
对方式三的优化:不需要创建Driver对象和注册
//1.声明连接条件的基本信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "***";
String password = "***";
//2.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//3.连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);//连接成功:com.mysql.cj.jdbc.ConnectionImpl@1fa268de
此方式的说明:
优化说明:为什么不用去造Class的对象和不用去注册驱动了?
原因:Driver声明了此静态方法,当我们通过反射将Driver加载到内存中时自动调用静态方法(静态方法随着类的加载而加载),自动创建了Driver对象和注册了驱动。
Driver中声明的静态方法如下(Driver源码):
在步骤2中,Class.forName(“com.mysql.cj.jdbc.Driver”);也可以不写,但是不建议。
可以省略的原因:导入的jar包中,存在文件java.sql.Driver 。
此文件中存放了我们导入jar包时,Driver存放的位置,运行时自动调用加载到内存。
获取方式五
最终版:将4个基本信息封装到配置文件,读取配置文件。
通过类加载器加载配置文件:文件默认路径为:当前模块下的src中
properties文件配置信息
driver=com.mysql.cj.jdbc.Driver
user=***
password=***
url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
———————–
//1.获取类加载器,获取文件流
ClassLoader classLoader = CreateJDBCConnections.class.getClassLoader();
InputStream is = classLoader.getResourceAsStream("connectionData.properties");
//2.Properties加载流
Properties properties = new Properties();
properties.load(is);
//3.获取信息
String url = properties.getProperty("url");
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String driver = properties.getProperty("driver");
//4.加载驱动
Class.forName(driver);
//5.连接数据库
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);//连接成功:com.mysql.cj.jdbc.ConnectionImpl@6b927fb
配置文件默认路径说明:
读取配置文件的两种方式:
1.IO流,文件默认相对路径位置:当前模块下.
2.通过类加载器,文件默认相对路径位置:当前模块下的src中.
方式五的优点:
1.实现了数据与代码的分离,实现了解耦。
2.如果要修改数据,避免了重新打包。
使用常用数据库连接池
使用数据库连接池,可以配置许多关于连接的信息,如最大连接数,创建时初始化连接数量等等,每个数据库连接池的方法名各有些区别,如有需要配置,可以到各官方查看。在此使用最基本的连接信息获取数据库连接,其他配置默认。
C3P0 数据库连接池
导入jar包 在此使用v0.9.1.2
方式一:硬编码方式获取连接
//1.创建ComboPooledDataSource对象
ComboPooledDataSource cpds = new ComboPooledDataSource();
//2.配置连接池连接信息com.mysql.cj.jdbc.Driver
cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/test");
cpds.setUser("***");
cpds.setPassword("***");
//3.获取连接
Connection connection = cpds.getConnection();
System.out.println(connection);
配置连接信息时,可以配置连接池的其他参数,如最大连接数等等。
连接成功信息:
方式2:使用配置文件.xml文件获取连接
配置xml文件-设置连接信息
获取连接
ComboPooledDataSource cpds = new ComboPooledDataSource("c3p0data");
Connection connection = cpds.getConnection();
System.out.println(connection);
连接成功信息:
DBCP 数据库连接池
导入jar包,在此使用v2.7.0
方式一:硬编码方式获取连接
//1.创建BasicDataSource对象
BasicDataSource bds = new BasicDataSource();
//2.配置连接信息
bds.setDriverClassName("com.mysql.cj.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost:3306/test");
bds.setUsername("root");
bds.setPassword("root");
//3.获取连接
Connection connection = bds.getConnection();
System.out.println(connection);
连接成功信息:
方式二:使用properties配置文件获取连接
配置文件信息
连接操作:
//创建properties对象,用以加载流
Properties properties = new Properties();
//调用系统类加载器,获取输入流
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("dbcp-config.properties");
//加载流,获取配置信息
properties.load(is);
BasicDataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
//获取连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
连接成功信息:
Druid(德鲁伊)数据库连接池(最常用)
Druid是阿里开源平台上一个数据库连接池的实现,结合了许多数据库连接池的优点,包括如上介绍两种,可以说是如今最受欢迎的数据库连接池之一。
导入jar包,在此使用1.2.11
properties.文件配置信息
在此方式:封装为了方法,处理了异常(try-catch)
private static DataSource source;
static {
try {
Properties properties = new Properties();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("propertiesDruid.properties");
properties.load(is);
source = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection connection = null;
try {
connection = source.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
调用封装好的方法,获取连接:
public void test1() {
Connection connection = getConnection();
System.out.println(connection);
}
成功连接信息:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154565.html