JavaWeb开发——JDBC连接数据库几种方式

本文详细介绍了Java连接MySQL数据库的四种方法,包括直接使用Driver、提高代码可移植性、利用DriverManager以及推荐的封装信息和使用连接池。通过示例代码展示了每种方法的实现步骤,并强调了连接池在管理数据库连接和优化资源利用方面的优势。
摘要由CSDN通过智能技术生成

JDBC连接Mysql数据库的几种方式

  • 第三方引入驱动

String url = "jdbc:mysql://localhost:3306/test";
Properties properties = new Properties();
properties.setProperty("user","root");
properties.setProperty("password","root");
// 获取Driver实现类对象
Driver driver = new com.mysql.jdbc.Driver();
Connection connection  = driver.connect(url,properties);
System.out.println(connection);

在使用driver.connect连接数据库的时候,我们需要获取一个url(访问数据库的路径)和info(也就是几组键值对、有关数据库信息的、其中最少包括user和password),因此我们需要往properties中注入相关信息;url中:jdbc:mysql——代表协议;localhost——ip地址;3306——Mysql默认端口号;test——本地数据库。

在使用这种方式连接数据库的时候、虽然看上去很简便,但是代码中涉及到第三方就是代码中的Driver(),我们在切换的时候就会产生问题或者当第三方不再更新开发的时候会引发不必要的麻烦、对程序的可移植性需要有一点维护能力

  • 可移植性开发

String url = "jdbc:mysql://localhost:3306/bigwork";
Properties properties = new Properties();
properties.setProperty("user","root");
properties.setProperty("password","1438");
// 获取Driver实现类对象
Class c = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver)c.newInstance();
Connection connection  = driver.connect(url,properties);
System.out.println(connection);

我们需要用到的是反射,Class.forName他会帮助我们在整个文档中去寻找指定的类,返回一个Class类,然后我们获取得到了这个类之后还不够,因为我们需要的是Driver类的对象、因此我们需要再去获得它的对象,用这两步就可以得到与上面一样的使用效果,而还可以使得代码不再使用第三方的api

  • DriverManager的使用

String url = "jdbc:mysql://localhost:3306/bigwork";
String user = "root";
String password = "1438";
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(url,user,password);
System.out.println(connection);

在这里,我们省略了注册与获取对象两个部分,而代码依旧可以连接数据库,是因为mysql自己帮我们完成了注册环节。Driver中,存在一个静态代码块,在类的加载后就会执行,这个静态代码块会帮我们完成注册环节。也可以理解为加载、连接两部分

  • 封装信息(推荐)

首先我们需要把我们需要连接数据库的基本信息进行一个封装

user=root
password=root
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver

新建一个jdbc.properties文件将基本信息填入

InputStream inputStream = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(inputStream);
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String url = properties.getProperty("url");
String driverClass = properties.getProperty("driverClass");
Class.forName(driverClass);
Connection connection = DriverManager.getConnection(url,user,password);
System.out.println(connection);

我们将外部的文件放入properties中,帮助我们完成键值对的配对,再将信息取出来,完成我们的连接

  • 连接池的使用(推荐)

在我们使用数据库连接池的时候要注意、外部的properties文件里面的各种键值对编写的方式是有一定约束的、不是随意的编写,例如:

所以我们在编写的时候、要符合对应的规范

username=root
password=1438
url=jdbc:mysql://localhost:3306/project
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10

我们给定了初始化时连接的个数以及最大的连接数、这样可以很好的帮我们管理连接

public static DruidDataSource dataSource;
static {
    InputStream inputStream = jdbcutil.class.getClassLoader().getResourceAsStream("jdbc.properties");
    Properties properties = new Properties();
    try {
        properties.load(inputStream);
        dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public static Connection getConnection(){
Connection connection = null;
    try {
        connection = dataSource.getConnection();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return connection;
}
public static void close(Connection connection){
    if(connection != null){
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在我们连接完成后、最好去关闭连接、这样可以帮我们更好的回收资源以及减少内存的占用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值