【问题标题】:How to give a relative path in Java for database如何在Java中为数据库提供相对路径
【发布时间】:2013-04-06 14:24:58
【问题描述】:

我想问一下如何在 java 中为数据库(ms 访问)提供相对路径,以便当我将项目放在其他驱动器中时,我不必编辑路径部分。

下面给出的是数据库的绝对路径:

con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};**DBQ=c:\\project\\a.mdb"** );

但是如果我将我的项目更改为另一个文件夹,假设 d: 那么我必须像这样编辑这个路径部分:

con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=**d:\\project\\a.mdb"** );

我想给出一个相对路径,以便我的项目可以在任何驱动器上运行 \project\a.mdb

【问题讨论】:

    标签: java database jdbc path relative-path


    【解决方案1】:

    我不知道您使用的驱动程序在使用路径时有多灵活(从未使用过该驱动程序)。但是解决它的一种方法是允许路径是可配置的,或者作为启动命令行参数,或者作为环境变量或系统属性。

    您还可以确保数据库位于类路径中,并使用getResource 找到它的位置,这将为您提供数据库的 URL。然后可以使用它来将其转换为文件路径。

    【讨论】:

      【解决方案2】:

      AFAIK,如果您省略路径名的驱动器名称部分,Windows 应用程序将在“当前”驱动器上查找。

      因此,请尝试将您使用的路径名从 "d:\\project\\a.mdb" 更改为 "\\project\\a.mdb"

      但是请注意,这意味着您需要在启动应用程序之前设置当前驱动器;例如在命令提示符处键入D:C:


      更好的选择是使数据库路径成为命令行参数或属性文件中的条目或其他内容。

      【讨论】:

        【解决方案3】:

        嗯,这就是我们所说的参数化!只需将路径作为参数,并在运行时传递。这是一个演示:

        public class DBOperation {
            public static void main(String[] args) {
             String path=args[0];
             String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};**DBQ="+path+"**)";
             ...
            }
        }
        

        并通过以下方式运行程序:

        java DBOperation c:\project\a.mdb
        

        【讨论】:

        • 实际上我正在开发一个项目,它是基于 gui 的项目,我不希望用户手动输入路径,我需要一些自动路径设置,例如相对路径
        • 嗯,另一个想法是你可以把路径放在配置文件中,然后解释配置来获取路径。在windows系统中,我认为跨分区时不能使用相对路径
        猜你喜欢
        • 2013-05-11
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多