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

写在前面

虽然在实际开发中关于这些操作都不会让我们去写,但是掌握这代码的逻辑编写对我们使用框架有一定的帮助。
学习JDBC:请关注专栏——JDBC学习——内容详细
相关文章:
JDBC总述

JDBC完成对数据库数据操作(增,删,改,查)

JDBC数据库事务
JDBC使用数据库连接池连接数据库(DBCP,C3P0,Druid)
Apache-DBUtils实现CRUD操作
欢迎光临我的主页:Java笔记本

声明:以下方式是循序渐进的,都是在前一种方式的完善的过程,对前一种方式的完善。前四种了解过程,重点掌握最后一种。

JDBC连接Mysql数据

  • 方式一
    • 1.具体步骤
    • 2.代码实现
  • 方式二
    • 1.改进
    • 2.代码实现
  • 方式三
    • 1.改进
    • 2.代码实现
  • 方式四
    • 1.改进
    • 2.代码实现
  • 方式五
    • 1.最终版(推荐使用)
    • 2.代码实现
  • 常见异常及处理方式

获取数据库连接要素:
要素一: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.代码实现

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.代码实现

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.代码实现

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.代码实现

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.最终版(推荐使用)

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

  • 这种方案的好处:实现了数据与代码的分离
  • 如果要修改文件,避免了文件的重新打包
  • JDBC连接Mysql数据(从简单到实用,超详细)_第1张图片

2.代码实现

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.在这里插入图片描述
解决:
数据库未连接
JDBC连接Mysql数据(从简单到实用,超详细)_第2张图片
2.JDBC连接Mysql数据(从简单到实用,超详细)_第3张图片
编码集的问题
解决:
在这里插入图片描述
连接数据库只是jdbc学习过程中的一个基础。后面我会出超详细的教程。增删改查。

你可能感兴趣的:(JDBC学习,java,数据库,JDBC)