前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC连接Mysql数据(从简单到实用,超详细)

JDBC连接Mysql数据(从简单到实用,超详细)

作者头像
小尘要自信
发布2023-10-10 15:00:58
1.7K0
发布2023-10-10 15:00:58
举报
文章被收录于专栏:CSDN小尘要自信

获取数据库连接要素: 要素一:Driver接口实现类: java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。 在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。

  • 加载驱动:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名 Class.forName(“com.mysql.jdbc.Driver”); 注册驱动:DriverManager 类是驱动程序管理器类,负责管理驱动程序 使用DriverManager.registerDriver(com.mysql.jdbc.Driver)来注册驱动

要素二:URL

  • 三部分组成,各部分间用冒号分隔。
  • jdbc:子协议:子名称
  • 协议:JDBC URL中的协议总是jdbc
  • 子协议:子协议用于标识一个数据库驱动程序
  • 子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号,数据库名

要素三:用户名和密码

方式一

1.具体步骤

1.获取连接,使用Driver接口 2.将用户名与密码封装 3.调用connect方法来返回一个Connection对象,这是一个连接

2.代码实现

代码语言:javascript
复制
public class Test01 {
    @Test
    public void textConnection() throws SQLException {
        //1.获取连接,使用Driver接口
        Driver driver=new com.mysql.jdbc.Driver();//需要用一个Mysql具体的driver的实现类
        String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";//定位要连接哪一个数据库,?后面的内容,是编码转换异常时加的
        //2.将用户名与密码封装
        Properties info=new Properties();
        info.setProperty("user","root");
        info.setProperty("password","123456");
        //3.调用connect方法来返回一个Connection对象,这是一个连接
        Connection connect = driver.connect(url, info);
        System.out.println(connect);//检查是否连接成功

    }
}

方式二

1.改进

1.代码当中尽量不要出现过多的第三方API,使代码具有更好的可移植性。 运用反射,反射可以很好的将第三方接口包装起来,可以实现动态的获取。

2.代码实现

代码语言:javascript
复制
public void Test02() throws Exception{
        //1.获取Driver的实现类对象(用反射):动态的获取
       Class clazz= Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
        Properties info=new Properties();
        info.setProperty("user","root");
        info.setProperty("password","123456");
       Connection connection= driver.connect(url,info);
        System.out.println(connection);
    }
}

方式三

1.改进

使用DriverManager来替换Driver,有三个参数的方法,Connection cc = DriverManager.getConnection(url, user, password);

2.代码实现

代码语言:javascript
复制
public class Test03 {
    @Test
    public void three() throws Exception {
        //1.获取基本信息
        Class clazz= Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
        String user="root";
        String password="123456";
        //2.注册驱动
        DriverManager.registerDriver(driver);
        //3获取连接
        Connection cc = DriverManager.getConnection(url, user, password);
        System.out.println(cc);
    }
}

方式四

1.改进

省去了驱动的注册,只需将类加载到内存中,加载到内存中有个静态方法,在类加载的适合就完成了驱动的注册

2.代码实现

代码语言:javascript
复制
public class Text04 {
    @Test
    public void  text() throws Exception {
        //1.获取基本信息
        String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
        String user="root";
        String password="123456";
        //2.获取基本类的实现对象   注册驱动
        Class.forName("com.mysql.jdbc.Driver");//连接mysql数据库时,这行也可以注释掉,Oracle不行
        //3.获取连接
        Connection cc = DriverManager.getConnection(url, user, password);
        System.out.println(cc);
    }
}

方式五

1.最终版(推荐使用)

将信息封装到配置文件中,通过读取配置文件的方式

  • 这种方案的好处:实现了数据与代码的分离
  • 如果要修改文件,避免了文件的重新打包
配置信息在这配置里插入图片描述
配置信息在这配置里插入图片描述

2.代码实现

代码语言:javascript
复制
public class Text05 {
    @Test
    public void Text5() throws Exception{
         //1.读取配置文件中的基本信息
        InputStream is = Text05.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");
        //2.加载驱动
        Class.forName(driverClass);
        //3.获取连接
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);

    }

}

常见异常及处理方式

1.

在这里插入图片描述
在这里插入图片描述

解决: 数据库未连接

在这里插入图片描述
在这里插入图片描述

2.

在这里插入图片描述
在这里插入图片描述

编码集的问题 解决:

在这里插入图片描述
在这里插入图片描述

连接数据库只是jdbc学习过程中的一个基础。后面我会出超详细的教程。增删改查。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方式一
    • 1.具体步骤
      • 2.代码实现
      • 方式二
        • 1.改进
          • 2.代码实现
          • 方式三
            • 1.改进
              • 2.代码实现
              • 方式四
                • 1.改进
                  • 2.代码实现
                  • 方式五
                    • 1.最终版(推荐使用)
                      • 2.代码实现
                      • 常见异常及处理方式
                      相关产品与服务
                      云数据库 MySQL
                      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档