在 java 应用程序中使用数据库

Posted

技术标签:

【中文标题】在 java 应用程序中使用数据库【英文标题】:Use Database in java application 【发布时间】:2011-03-20 10:34:49 【问题描述】:

我是 Java 应用程序编程的初学者。

我已经用 Java 创建了一个数据库应用程序。我使用带有 JDBC-ODBC 驱动程序的 MS 访问数据库。我的应用程序的创建连接代码如下:

private void connection() 

    try 
        String driverurl = "jdbc:odbc:dharti_data";
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection(driverurl,"","");
     catch (SQLException e) 
        JOptionPane.showMessageDialog(frm,e.getSQLState(),"Database Access Error",JOptionPane.ERROR_MESSAGE);
     catch (Exception e)          
        JOptionPane.showMessageDialog(null,e.getMessage(),"Database Access Error",JOptionPane.ERROR_MESSAGE);
    

此代码完美运行,但此代码使用我在控制面板 > 管理工具 > 数据源 (ODBC) > 系统 DSN > 添加数据源中声明的数据源名称,并带有 Microsoft Access 驱动程序 (*.mdb)。

但是当我在另一台 PC 上运行该应用程序时,它无法运行,而是生成了一个数据库错误。

我知道我可以在 Data Sources (ODBC) > System DSN 中声明一个驱动程序,然后它就会运行。但我不想在我运行我的应用程序的每台机器上都这样做。我的应用程序应该能够自动获取数据库连接。如何使我的应用程序不需要数据源名称?

【问题讨论】:

【参考方案1】:
    String filename = "C:/Lab/northwind.mdb"; // this the path to mdb file
    String database = "jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=";
    database+= filename.trim() + ";DriverID=22;READONLY=true"; // add on to the end 
    // now we can get the connection from the DriverManager
    Connection con = DriverManager.getConnection( database ,"",""); 

【讨论】:

【参考方案2】:

我不确定我是否收到了这个,但是您是否将 jdbc 驱动程序与您的应用程序一起提供?它必须在您的类路径中,并且需要与您的应用程序一起部署。

【讨论】:

【参考方案3】:

您必须以编程方式修改这些注册表部分:

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INIHKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC

Ice Engineering 提供了一个公共域 api,允许您这样做。除了 jars 之外,它还有一个 DLL,您必须随应用程序一起提供该 DLL。这是相当直接的,并且会起作用。

为了更好地了解您必须做什么,请在安装任何东西之前使用 regedit 查看值,然后手动安装 ODBC 数据库,最后将新值与旧值进行比较。

【讨论】:

【参考方案4】:

我使用 sun.jdbc.odbc.JdbcOdbcDriver 连接到 MS Access 数据库。将它与类文件放在同一目录中,它应该可以工作。虽然它应该已经安装在 Java SDK 中。

这是我不久前做的一个练习程序的示例。

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

System.out.println("Driver loaded");

// Establish a connection
Connection connection = DriverManager.getConnection
("jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=(MS ACCESS DATABASE DIRECTORY)");

System.out.println("Database connected");

// Create a statement
Statement statement = connection.createStatement();

// Execute a statement
ResultSet resultSet = statement.executeQuery
  ("select f_name, l_name from Test where f_name = 'Luke'"); // For example

// Iterate through the result and print the results
while (resultSet.next())
  System.out.println(resultSet.getString(1) + "\t" + resultSet.getString(2) );

【讨论】:

以上是关于在 java 应用程序中使用数据库的主要内容,如果未能解决你的问题,请参考以下文章

Java应用Ⅺ在 Java 中使用MyBatis框架进行关系型数据库操作

如何在单个 Java 应用程序中使用两个 PostgreSQL DB 版本?

在 java 应用程序之间使用 nginx 时丢失标头中的数据

如何在 Java 应用程序中设置 H2 嵌入式数据库以在小型网络中使用?

使用 UCanAccess 保存数据时 Java 应用程序挂起

如何在不使用 CrudRepository 的情况下将 java spring boot 应用程序中定义的实体反映在数据库中