在java应用程序中使用Database

时间:2011-03-20 10:34:50

标签: java jdbc

我是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上运行该应用程序时,它无法运行,而是产生数据库错误。

我知道我可以在数据源(ODBC)中声明一个驱动程序>系统DSN,然后它将运行。但我不想在我运行应用程序的每台机器上执行此操作。我的应用程序应该能够自动获取数据库连接。如何使我的应用程序不需要数据源名称?

4 个答案:

答案 0 :(得分: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 ,"",""); 

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

我使用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) );