zoukankan      html  css  js  c++  java
  • MYSQL 之 JDBC(一): 数据库连接(一)通过Driver接口获取数据库连接

    通过Driver接口获取数据库连接

    数据持久化

    数据库存取技术分类

      JDBC直接访问数据库
      JDO技术
      第三方O/R工具,如Hibernate,ibatis等
    JDBC是java访问数据库的基石

    JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口。

    JDBC接口(API)包括两个层次:

    • 面向应用的API:java api,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
    • 面向数据库的API:java driver api,供开发商开发数据库驱动程序用。

    JDBC试验,Driver是一个接口:数据库厂商必须提供实现的接口,能从其中获取数据库连接。

    可以通过Driver的实现类对象获取数据库连接

      加入mysql驱动

        解压mysql-connector-java.zip

        在挡墙项目下新建lib目录

        吧.jar文件复制到lib目录下

        右键buildpath,add to buildpath加入到类路径下

      JDBC的URL的标准由三部分组成,各部分间用冒号分隔。

        jdbc:<子协议>:<子名称>

        协议:JDBC URL中的协议总是jdbc

        子协议:子协议用于标识一个数据库驱动程序

        子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息

      遇到的问题:

        进不去,各种报错:可能是密码错误了。https://blog.csdn.net/QQ17680473835/article/details/81841180

        time zone错误:https://blog.csdn.net/qq_19332219/article/details/102847809

    package com.litian.jdbc;
    import java.sql.Connection;
    import java.sql.Driver;
    import java.sql.SQLException;
    import java.util.Properties;
    
    
    /**
     * @author: Li Tian
     * @contact: litian_cup@163.com
     * @software: IntelliJ IDEA
     * @file: JDBCTest.java
     * @time: 2019/12/15 18:56
     * @desc: JDBC试验,Driver是一个接口:数据库厂商必须提供实现的接口,能从其中获取数据库连接。
     */
    
    public class JDBCTest {
        public static void main(String[] args) throws SQLException {
            // 1. 创建一个Driver实现类的对象
            Driver driver = new com.mysql.jdbc.Driver();
            // 2. 准备连接数据库的基本信息:url,user,password
            String url = "jdbc:mysql://localhost:3306/girls";
            Properties info = new Properties();
            info.put("user", "root");
            info.put("password", "tian19951103");
    
            // 3. 调用Driver接口的connect(url, info)获取数据库连接
            Connection connection = driver.connect(url, info);
            System.out.println(connection);
        }
    }

    编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接

    解决方案:把数据库驱动Driver 实现类的全类名、url、user、password放入一个配置文件中,通过修改配置文件的方式实现和具体的数据库解耦。

    jdbc.properties

    driver=com.mysql.jdbc.Driver
    jdbcUrl=jdbc:mysql://localhost:3306/girls
    user=root
    password=tian19951103

    JDBCTest

    package com.litian.jdbc;
    
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.Driver;
    import java.sql.SQLException;
    import java.util.Properties;
    
    
    /**
     * @author: Li Tian
     * @contact: litian_cup@163.com
     * @software: IntelliJ IDEA
     * @file: JDBCTest.java
     * @time: 2019/12/15 18:56
     * @desc: JDBC试验,Driver是一个接口:数据库厂商必须提供实现的接口,能从其中获取数据库连接。
     */
    
    public class JDBCTest {
    
        public void test1() throws SQLException {
            // 1. 创建一个Driver实现类的对象
            Driver driver = new com.mysql.jdbc.Driver();
            // 2. 准备连接数据库的基本信息:url,user,password
            String url = "jdbc:mysql://localhost:3306/girls";
            Properties info = new Properties();
            info.put("user", "root");
            info.put("password", "tian19951103");
    
            // 3. 调用Driver接口的connect(url, info)获取数据库连接
            Connection connection = driver.connect(url, info);
            System.out.println(connection);
        }
    
        // 编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接
        public Connection getConnection() throws Exception {
            String driverClass = null;
            String jdbcUrl = null;
            String user = null;
            String password = null;
    
            // 读取类路径下的jdbc.propertites 文件
            InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
            Properties properties = new Properties();
            properties.load(in);
            driverClass = properties.getProperty("driver");
            jdbcUrl = properties.getProperty("jdbcUrl");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
    
            Driver driver = (Driver) Class.forName(driverClass).newInstance();
    
            Properties info = new Properties();
            info.put("user", user);
            info.put("password", password);
            Connection connection = driver.connect(jdbcUrl, info);
    
            return connection;
        }
    
        public void testGetConnection() throws Exception {
            System.out.println(getConnection());
        }
    
        public static void main(String[] args) throws Exception {
            new JDBCTest().testGetConnection();
        }
    }


    ————————————————
    版权声明:本文为CSDN博主「李英俊小朋友」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_21579045/article/details/105386353

  • 相关阅读:
    jquery实现页面的搜索功能
    url中的查询字符串的参数解析
    5.14日学习内容1:jquery表单相关知识
    5.12日北京“咖啡陪你”咖啡吧学习笔记
    layui基础上的tree菜单动态渲染;
    H5area的热区锚点随着图片的尺寸而变化
    Python3基础 raise 产生RuntimeError 异常
    Python3基础 raise + 指定类型异常+异常的解释 产生特定类型异常
    Python3基础 判断变量大于一个数并且小于另外一个数
    Python3基础 内嵌函数 简单示例
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13199436.html
Copyright © 2011-2022 走看看