2011-03-20 60 views
0

我是Java应用程序编程的初学者。在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中声明一个驱动程序,然后它将运行。但我不想在每台运行我的应用程序的机器上执行此操作。我的应用程序应该能够自动获取数据库连接。我如何让我的应用程序不需要数据源名称?

回答

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 ,"",""); 
+0

谢谢..但另一个系统到另一个目录。所以...... – Dugs 2011-03-20 11:02:35

0

林不知道如果我得到这个,但你是否与您的应用程序一起运输jdbc驱动程序?它必须位于您的类路径中,并且需要与您的应用程序一起部署。

0

你将不得不以编程方式修改这些注册表部分:

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

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

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

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)); 
相关问题