在java中与数据库连接的技术是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中与数据库连接的技术是啥相关的知识,希望对你有一定的参考价值。

ODBC JDBC SQL ADO

  JDBC和ODBC都是数据库连接的技术,JDBC使用更加广泛。
  JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
  开放数据库互连(ODBC)是Microsoft提出的数据库访问接口标准。开放数据库互连定义了访问数据库API的一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言(但是Microsoft的ODBC文档是用C语言描述的,许多实际的ODBC驱动程序也是用C语言写的。)ODBC规范后来被X/OPEN和ISO/IEC采纳,作为SQL标准的一部分,具体内容可以参看《ISO/IEC 9075-3:1995 (E) Call-Level Interface (SQL/CLI)》等相关的标准文件。
参考技术A 一般用JDBC
ODBC是微软公司开放服务结构中有关数据库的一个组成部分本回答被提问者采纳
参考技术B JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 参考技术C JDBC ODBC也可以 如果你用框架得话可以用hibernate连接数据库 参考技术D JDBC(Java Data Base Connectivity),用的时候要先导入jar包,其实就是数据库连接驱动,不同的数据库有不同的jar包;ODBC也是一种数据库连接的技术,你可以去网上看一下,SQL是一种数据库操作语言,你的程序访问数据库要执行相应的操作,你就得写SQL语句。至于ADO是.NET里面的概念

在 java 中与 MS Access 数据库建立 SQL 连接时找不到合适的驱动程序

【中文标题】在 java 中与 MS Access 数据库建立 SQL 连接时找不到合适的驱动程序【英文标题】:No suitable driver found when making SQL connection to MS Access Database in java 【发布时间】:2014-06-08 23:06:54 【问题描述】:

我在一个简单的 java 应用程序中有一个 Jbutton (GetDataFromDB),它假设将下面代码中路径中描述的数据库中的数据加载到应用程序的 Jtable 中。

将答案编辑为代码:

private void GetDataFromDBActionPerformed(java.awt.event.ActionEvent evt)                                               
    Connection con;
    ResultSet rs = null;
    Statement stmt;

    try 

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con = DriverManager.getConnection("jdbc:odbc:Driver=MS Access Driver (*.mdb, *.accdb);Dbq=C:\\Users\\Bruger\\Documents\\Database11.accdb");

    stmt = con.createStatement();
    String query = null;
    query = "select * from cost";

    rs = stmt.executeQuery(query);

    i = 0;

    while (rs.next())
        i = i + 1;
        jTable.getModel().setValueAt(rs.getString(1), i, 1);
        jTable.getModel().setValueAt(rs.getString(2), i, 2);
    


    rs.close();
    stmt.close();
    con.close();
     catch(Exception err)
    System.out.println(err.getMessage());


  

当我按下按钮时,我在运行输出窗口中收到以下消息:

没有找到适合 jdbc:odbc:Driver=Microsoft Access Driver (.mdb, .accdb);Dbq=C:\Users\Bruger\Documents\Database11 的驱动程序。数据库

我的代码顶部有导入:

import java.sql.*;

我也尝试从“Microsoft Access Driver”更改为“MS Access Driver”,但我在运行输出窗口中收到相同的消息,即

没有找到适合 jdbc:odbc:Driver=MS Access Driver (.mdb, .accdb);Dbq=C:\Users\Bruger\Documents\Database11 的驱动程序。数据库

非常感谢您提供的所有帮助、意见和反馈。

【问题讨论】:

con = DriverManager.getConnection(...) 之前使用Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 【参考方案1】:

取决于驱动程序,如果您是 JDK 6 之前的**!

您需要注册驱动程序。

尝试添加:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

所以:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
con = DriverManager.getConnection("jdbc:odbc:Driver=Microsoft Access Driver (*.mdb, *.accdb);Dbq=C:\\Users\\Bruger\\Documents\\Database11.accdb");

还值得一提的是,您无需每次获得连接时都执行此操作,只需一次以确保已加载类。

有很多与此相关的***问题,但原因如下:

来源 - 来自 Java 教程:

在以前的 JDBC 版本中,要获得连接,您首先必须 通过调用方法 Class.forName 来初始化 JDBC 驱动程序。这 方法需要 java.sql.Driver 类型的对象。每个 JDBC 驱动程序 包含一个或多个实现接口的类 java.sql.驱动程序。 ...在您的班级中找到的任何 JDBC 4.0 驱动程序 路径会自动加载。 (但是,您必须手动加载任何 使用 Class.forName 方法的 JDBC 4.0 之前的驱动程序。)


关于一个相关且非常重要的说明。

我还建议查找如何处理连接。数据库连接和游标等外部资源如果您不熟悉它们很容易泄漏。查找“try finally blocks”,或者最近在 java 7+“try-with-resources”中查找。

【讨论】:

感谢您的回答 GoldenJam,它解决了这个问题,也感谢您指出搜索策略以建立更复杂的连接 现在还有一个问题。当我启动应用程序并按下按钮时。什么都没发生。该表没有像我希望的那样填充。我得到你在运行输出窗口中指出的这个字符串,即 sun.jdbc.odbc.JdbcOdbcDriver

以上是关于在java中与数据库连接的技术是啥的主要内容,如果未能解决你的问题,请参考以下文章

java中数据源和连接池是啥?现在还用得上么?

java使用jdbc连接mysql数据库,表里有记录,但是查询的结果集为空,是啥原因

java连接MYSQL的驱动是啥? 下载mysql时没有自带的?

数据库连接池的Java连接池

Java:连接请求超时是啥意思?超时就不再请求了?

java中与MS Access的连接[重复]