【问题标题】:Use Database in java application在 java 应用程序中使用数据库
【发布时间】: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 中声明一个驱动程序,然后它就会运行。但我不想在我运行我的应用程序的每台机器上都这样做。我的应用程序应该能够自动获取数据库连接。如何使我的应用程序不需要数据源名称?

【问题讨论】:

    标签: java jdbc


    【解决方案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.INI
        HKEY_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) );
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-11-28
            • 2015-08-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-07-18
            相关资源
            最近更新 更多