JDBC中获取连接的几种方式,快来看看吧

2023-11-02

注:下面的连接均是以mysql为例,@Test是Junit4的注解用于测试,Properties不会的话可自行百度

可能存在某些不规范的说法或者错误,恳请各位指出错误

 方式一:

import com.mysql.cj.jdbc.Driver;
import java.sql.Connection;

@Test
public void test1() throws SQLException {
        //方式1:Driver是mysql包里面的
        Driver driver=new Driver();
        //指定url
        String url="jdbc:mysql://localhost:3306/jdbc";
        //将用户名和密码封装到Properties
        Properties properties=new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","1234");
        //传入url和properties
        Connection connect = driver.connect(url, properties);
        System.out.println(connect);
    }

执行后打印connection类似与下面这样,就代表数据库连接成功

com.mysql.cj.jdbc.ConnectionImpl@4f638935

方式二:

    import com.mysql.cj.jdbc.Driver;
    import java.sql.Connection;

    @Test
    public void test2() throws Exception {
        //方式二
        //包名注意是com.mysql.cj.jdbc.Driver还是com.mysql.jdbc.Driver,jar包版本不同包名不同

        Class clas = Class.forName("com.mysql.cj.jdbc.Driver");
        //调用newInstance()方法创建一个Driver对象

        Driver driver = (Driver) clas.newInstance();
        //指定url,下面方法同方式一
        String url="jdbc:mysql://localhost:3306/jdbc";
        //将用户名和密码封装到Properties
        Properties properties=new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","1234");
        Connection connect = driver.connect(url, properties);
        System.out.println(connect);
    }

执行后打印connection类似与下面这样,就代表数据库连接成功

com.mysql.cj.jdbc.ConnectionImpl@4f638935

方式三:通过反射以及调用DriverManager的getConnection方法获取连接

    import java.sql.DriverManager;
    import java.sql.Connection;

    @Test
    public void test3() throws Exception {
        //方式三
        //通过反射
       Class.forName("com.mysql.cj.jdbc.Driver");
        //指定url,数据库的用户名和密码
       String url="jdbc:mysql://localhost:3306/jdbc";
       String user="root";
       String password="1234";
       //调用DriverManager的getConnection方法获取连接,在idea中按住ctrl+p可以看参数,把url,用户名,密码分别填上。
       Connection connection = DriverManager.getConnection(url, user, password);
       System.out.println(connection);
    }

执行后打印connection类似与下面这样,就代表数据库连接成功

com.mysql.cj.jdbc.ConnectionImpl@4f638935

方式四:最终版,读取properties文件

       首先,在类加载目录下创建一个properties文件,例如mysql.properties;maven工程的话可以在resource目录下建

user=root    //数据库的用户名
password=1234    //数据库的密码
url=jdbc:mysql://localhost:3306/jdbc  //数据库的url
driver=com.mysql.cj.jdbc.Driver  //驱动的位置注意是com.mysql.cj.jdbc.Driver还是com.mysql.jdbc.Driver要根据不同版本的jar包进行确定
    import java.sql.DriverManager;
    import java.sql.Connection;

    @Test
    public void test4() throws Exception {
        //1,读取配置文件的信息
        //通过反射获取类加载器,然后读取properties文件,下面的ConnectionFunction是当前类的类名
        InputStream resourceAsStream = ConnectionFunction.class.getClassLoader().getResourceAsStream("mysql.properties");
        Properties properties=new Properties();
        //2,加载配置文件
        properties.load(resourceAsStream);
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driver");
        //3,加载驱动
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

执行后打印connection类似与下面这样,就代表数据库连接成功

com.mysql.cj.jdbc.ConnectionImpl@4f638935

考虑到以后使用jdbc时,都要获取连接,那么我们可以对上面的方法进行简单的封装,建一个类命名为JdbcUtils,封装获取连接方法的返回值是Connection,注意是sql包下的Connection,不要导错包,工具类的方法定义为static,然后把最终版的获取连接拷贝进来,最后返回这个连接就可以了。

package com.yajxweb.jdbc.utils;

import com.yajxweb.jdbc.ConnectionFunction;


import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JdbcUtils {

    /**
     * 获取数据库连接
     * @return
     * @throws Exception
     */
    public static Connection getConnection() throws Exception {
       //1,读取配置文件的信息
        //通过反射获取类加载器,然后读取properties文件,下面的ConnectionFunction是当前类的类名
        InputStream resourceAsStream = ConnectionFunction.class.getClassLoader().getResourceAsStream("mysql.properties");
        Properties properties=new Properties();
        //2,加载配置文件
        properties.load(resourceAsStream);
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driver");
        //3,加载驱动
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        return connection;
    }

   
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC中获取连接的几种方式,快来看看吧 的相关文章

随机推荐

  • LeetCode 87. 扰乱字符串

    题意 给定字符串 s 和 t 问是否可以操作变换 s 变成 t 使用下面描述的算法可以扰乱字符串 s 得到字符串 t 如果字符串的长度为 1 算法停止 如果字符串的长度 gt 1 执行下述步骤 在一个随机下标处将字符串分割成两个非空的子字符
  • Windows10 FTP Server

    打开FTP相关功能 启动管理界面 InetMgr gt 右键网站 gt 添加 FTP 站点
  • Gateway网关-源码讲解从GatewayAutoConfiguration开始

    spring cloud gateway core 包 下 spring factories Auto Configure org springframework boot autoconfigure EnableAutoConfigura
  • Qt IFW打包安装包---(基础介绍)

    Qt IFW介绍 全称 Qt Installer Framework 概述 Qt安装程序框架提供了一组工具和实用程序 只需创建安装程序一次 无需改动源码 即可将它们部署在所有支持桌面QT的平台 安装程序将在运行它们的平台上具有原生外观和感觉
  • [openGL]正交投影,透视投影,MVP变换

    openGL 正交投影 透视投影 MVP变换 导读 本节主要总结MVP变换 Model View Projection 来说明三维空间中的物体是如何映射到二维屏幕上的 知识点 View Camera Transformation 视图 相机
  • 动态规划-矩阵连乘

    动态规划 矩阵连乘 C 习题描述 题目描述 给定n个矩阵 A1 A2 An n lt 100 其中Ai与Ai 1是可以相乘的 判断这n个矩阵通过加括号的方式相乘 使得相乘的次数最少 输入说明 输入第一行是一个正整数 表示有n个矩阵 之后有n
  • Go语言学习-- No.12 结构体-- 匿名结构体的定义和初始化

    匿名结构体的定义和初始化 匿名结构体的定义和初始化 匿名结构体的定义和初始化 匿名结构体无须type关键字就可以直接使用 且不用写出类型名称 匿名结构体在创建的同时也要创建对象 匿名结构体在初始化时需进行匿名结构体定义和成员变量初始化 举例
  • 适配小程序隐私保护指引设置

    由于小程序发布了一个公告 那么接下来就是怎么改简单的问题了 毕竟不太想大的改动历史上的代码 尽量简单的适配隐私策略就可以了 整体思路也是参考现在App普遍的启动就让用户同意隐私策略 不同意不让用 同意了之后才能够继续使用 公告内容 参考文档
  • OpenGL GLFW入门篇 - 画点集

    效果图 主体代码 void DrawPoints void int i GLfloat x y glPushMatrix 另一个相对的Z平移可以分离对象 glLoadIdentity glTranslatef 0 0 0 0 0 f 设置点
  • maven release版本重复上传error

    A couple things I can think of user credentials are wrong url to server is wrong user does not have access to the deploy
  • 【2023】华为OD机试真题Java-题目0209-找出通过车辆最多颜色

    找出通过车辆最多颜色 题目描述 在一个狭小的路口 每秒只能通过一辆车 假如车辆的颜色只有3种 找出 N N N 秒内经过的最多颜色的车辆数量 三种颜色编号为0 1 2 输入描述 第一行输入的是通过的车辆颜色信息 0 1 1 2 代表4秒钟通
  • python识别视频中火焰_监控视频中火焰检测算法

    基于视频的火焰的检测 如果通过采集监控摄像头的画面 监控广大区域 发现着火区域 能够快速报警的话 就可以有效提高监控的效果 提早报警 大大减少财产损失和人员伤亡 我们视觉上发现火灾的途径有2个 通过观察火焰 及时发现火灾 通过观察烟雾 及时
  • 【前端面试】VUE面试常问(内含个人整理与总结)

    我为什么选择vue 个人感觉编码方式和html差别不大 上手很块 对新手友好 vue与react的比较 React是库 Vue则是完整的框架相同点 都是数据驱动视图 都遵循组件化思想 遵循基于可重用组件的方法 提供component方法 都
  • 【深度学习】——如何提高map值

    目录 代码获取 map原理 map提高技巧 技巧总结 实战 1 效果不佳map55 55 1 单独调整get dr txt py中的self iou 0 3 2 单独调整get map py中的minoverlap 3 同时调整minove
  • 修改vscode的exe生成位置

    修改vscode的exe生成位置 概述 注意 修改task json文件 修改launch json文件 概述 在windows系统使用vscode学习C 时 调试的时候会在cpp文件的目录里生成一个exe文件 造成文件很多 有点乱 就想着
  • '2.587426955E9' in column '2' is outside valid range for the datatype INTEGER.

    今天在展现人员信息时遇到这个错误 2 587426955E9 in column 2 is outside valid range for the datatype INTEGER 在网上查了 说是超出了INTEGER的最大长度 后经实践检
  • java 将图片转为base64返回给前端

    一 controller端代码 RequestMapping value captcha public void imagecode HttpServletRequest request HttpServletResponse respon
  • vue:前端接收并展示后端返回的一个图片对象(文件流)

    需求 前端接收并展示后端返回的一个图片对象 文件流 没有图片的时候 显示默认图片 1 HTML 造空间 展示图片 div class qrcodeBox img div 2 定义变量 这里require的作用是设置默认图片 data ret
  • H5页面在ios的浏览器上使用 高德地图 报当前定位失败Geolocation permission denied 或者 偶尔报AMap没有找到的

    1 解决报当前定位失败Geolocation permission denied 可以去高德api查看 常见问题 高德地图API amap com 图中红圈2 3 4 5 6对应Geolocation permission denied报错
  • JDBC中获取连接的几种方式,快来看看吧

    注 下面的连接均是以mysql为例 Test是Junit4的注解用于测试 Properties不会的话可自行百度 可能存在某些不规范的说法或者错误 恳请各位指出错误 方式一 import com mysql cj jdbc Driver i