开发者社区> 问答> 正文

常见数据库连接方式有哪些?

常见数据库连接方式有哪些?

展开
收起
行者武松 2018-01-12 13:28:17 4625 0
2 条回答
写回答
取消 提交回答
  • 以Java操作mysql为例 //方式一

        public void connect01() throws SQLException {
           Driver driver = new Driver();
           String url = "jdbc:mysql://localhost:3306/db01?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false";
            //将用户名和密码放入到Properties 对象
            Properties properties = new Properties();
            //说明user和password 是规定好,后面的值根据实际情况写
            properties.setProperty("user", "root");//用户
            properties.setProperty("password", "123456");//密码
            Connection connect = driver.connect(url, properties);
            System.out.println(connect);
        }
    
    //方式二
    ```@Test
    public void connect02() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
        //使用反射加载Driver类,动态加载,更加灵活,减少依赖性
        Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) aClass.newInstance();
        String url = "jdbc:mysql://localhost:3306/db01?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false";
        //将用户名和密码放入到Properties 对象
        Properties properties = new Properties();
        //说明user和password 是规定好,后面的值根据实际情况写
        properties.setProperty("user", "root");//用户
        properties.setProperty("password", "123456");//密码
    
        Connection connect = driver.connect(url, properties);
        System.out.println("方式二:"+connect);
    }
    
    
        //方式3 使用DriverManager 替代 Driver 进行统一管理
        ```@Test
        public void connect03() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
            //使用反射加载Driver
            Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
            Driver driver =(Driver) aClass.newInstance();
    
            //创建url 和 user 和 password
            String url = "jdbc:mysql://localhost:3306/db01?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false";
            String user = "root";
            String password = "123456";
    
            DriverManager.registerDriver(driver);//注册driver驱动
    
            Connection connection = DriverManager.getConnection(url, user, password);
            System.out.println("第三种方式" + connection);
        }
    
    //方式4 使用Class.forName 自动完成注册驱动,简化代码
    //这种方式获取连接推荐使用
    ```@Test
    public void connect04() throws ClassNotFoundException, SQLException {
        //使用反射加载了Driver类
        //在加载Driver类时,完成注册
        //为什么使用反射的时候不用注册加载驱动类了,因为底层已经帮我们注册好了
        /*
            源码:1.静态代码块,在类加载时,会执行一次
                2.DriverManager.registerDriver(new Driver())
                3.因此注册driver的工作已经完成
                static {
                    try {
                         DriverManager.registerDriver(new Driver());
                    } catch (SQLException var1) {
                         throw new RuntimeException("Can't register driver!");
                    }
                }
         */
        Class.forName("com.mysql.cj.jdbc.Driver");
    

    // com.mysql.cj.jdbc.Driver //创建url user 和password String url = "jdbc:mysql://localhost:3306/db01?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false"; String user = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url, user, password); System.out.println("第四种方式"+connection); }

    
    
        //方式5 在方式4的基础上改进,增加配置文件,让连接mysql更加灵活
        ```@Test
        public void connect05() throws IOException, ClassNotFoundException, SQLException {
            //通过Properties对象获取配置文件的信息
            Properties properties = new Properties();
            properties.load(new FileInputStream("src\\mysql.properties"));
            //获取相关的值
            String user = properties.getProperty("user");
            String password = properties.getProperty("password");
            String driver = properties.getProperty("driver");
            String url = properties.getProperty("url");
    
            Class.forName("com.mysql.cj.jdbc.Driver");//建议写上  不写也没事,因为导入的驱动里的META-INF里的services里的文件
            Connection connection = DriverManager.getConnection(url,user,password);
    
            System.out.println("方式5"+connection);
    
    2022-12-09 09:53:07
    赞同 展开评论 打赏
  • PostgreSQL你值得拥有。

    不同的数据库连接数据库的方式不同,但是大体分为几种:

    • ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。
    • DAO(Data Access Objects):数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式---应用的专一性
    • RDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。---无疑是在odbc基础上的
    • OLE DB 是 Microsoft 的一个战略性系统级编程接口,用于管理整个组织内的数据。OLE DB 是建立在 ODBC 功能之上的一个开放规范。ODBC 是为访问关系型数据库而专门开发的,OLE DB 则用于访问关系型和非关系型信息源,例如主机 ISAM/VSAM 和层次数据库,电子邮件和文件系统存储,文本、图形和地理数据以及自定义业务对象。
      OLE DB 定义了一组 COM 接口,对各种数据库管理系统服务进行封装,并允许创建软件组件,实现这些服务。OLE DB 组件包括数据提供程序(包含和表现数据)、数据使用者(使用数据)和服务组件(处理和传送数据,例如,查询处理器和游标引擎)。

    OLE DB 接口有助于平滑地集成组件,这样,OLE DB 组件厂商就可以快速地向市场提供高质量 OLE DB 组件。此外,OLE DB 包含了一个连接 ODBC 的“桥梁”,对现用的各种 ODBC 关系型数据库驱动程序提供一贯的支持。---号称取代odbc,但也兼容odbc

    • ADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。 作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。 ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。---可以说是对odbc,oledb这些系统级的编程接口的汇接,并对DAO,RDO这些应用级的编程接口的升级吧。
    2019-07-17 21:53:35
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载