java 获取mysql数据库的连接方式

本文介绍五种使用Java连接MySQL的方法,包括直接使用Driver类、通过动态反射获取驱动实例、使用DriverManager获取连接等,并逐步优化代码,最终实现通过配置文件读取数据库连接信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Connect_Test {
	@Test
	public void test() throws SQLException {
		
		//mysql 8.0版本后 用com.mysql.cj.jdbc.Driver()获取驱动
		Driver driver = new  com.mysql.cj.jdbc.Driver();
		//统一定位资源s看情况可加可不加
		String s="?useUnicode=true&characterEncoding=utf-8";
		String url ="jdbc:mysql://localhost:3306/test"+s;
		//假如重新生成代码,Properties文件需要删除再造,不然报错
		Properties info = new Properties();
		//配置文件的key 不要写错,就是user 和 password
		info.setProperty("user", "root");
		info.setProperty("password", "abc123");
		
		Connection connect = driver.connect(url, info);
		System.out.println(connect);
	}
}
//第二种方法 通过动态反射获取mysql的实现类对象,优点是可移植性,不出现第三方的API
 @Test
    public void test2() throws Exception {

        Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");

        Constructor<?> declaredConstructor = aClass.getDeclaredConstructor();

        declaredConstructor.setAccessible(true);

        Driver driver = (Driver) declaredConstructor.newInstance();

        Properties info = new Properties();
        String url ="jdbc:mysql://localhost:3306/test";
        info.setProperty("user","root");
        info.setProperty("password","abc123");

        Connection connect = driver.connect(url, info);

        System.out.println(connect);

    }
//使用DriverManager 获取链接
@Test
    public void test3() throws Exception {

        //反射获取到实现类driver
        Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
        Constructor<?> declaredConstructor = aClass.getDeclaredConstructor();
        declaredConstructor.setAccessible(true);
        Driver driver = (Driver) declaredConstructor.newInstance();

        //注册
        DriverManager.registerDriver(driver);
        //用户密码
        String url,user,password;
        url="jdbc:mysql://localhost:3306/test";
        user="root";
        password="abc123";
        //获取链接
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }
//对第三个方法的优化,利用了静态代码块的原理
@Test
    public void test4() throws Exception {

        //用户密码
        String url,user,password;
        url="jdbc:mysql://localhost:3306/test";
        user="root";
        password="abc123";

        //反射获取到实现类driver
        //加载Driver 在mysql中有如下操作(静态代码块随着类的加载而加载)实现了第94行操作
//        static {
//            try {
//                DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//            } catch (SQLException var1) {
//                throw new RuntimeException("Can't register driver!");
//            }
//        }
        Class.forName("com.mysql.cj.jdbc.Driver");

//        Constructor<?> declaredConstructor = aClass.getDeclaredConstructor();
//        declaredConstructor.setAccessible(true);
//        Driver driver = (Driver) declaredConstructor.newInstance();

        //注册
//        DriverManager.registerDriver(driver);
        //获取链接
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }
最终优化
@Test
    public void test5() throws Exception {
        //配置文件信息
        InputStream is = ConnectTest.class.getClassLoader().getResourceAsStream("jdbc.properties");

        Properties properties = new Properties();

        properties.load(is);

        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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值