在 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.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) );
【讨论】:
以上是关于在 java 应用程序中使用数据库的主要内容,如果未能解决你的问题,请参考以下文章
Java应用Ⅺ在 Java 中使用MyBatis框架进行关系型数据库操作
如何在单个 Java 应用程序中使用两个 PostgreSQL DB 版本?
在 java 应用程序之间使用 nginx 时丢失标头中的数据
如何在 Java 应用程序中设置 H2 嵌入式数据库以在小型网络中使用?
使用 UCanAccess 保存数据时 Java 应用程序挂起
如何在不使用 CrudRepository 的情况下将 java spring boot 应用程序中定义的实体反映在数据库中