【问题标题】:JDBC connection string with spaces on file path (sqlite, hsqldb)文件路径上带有空格的 JDBC 连接字符串(sqlite、hsqldb)
【发布时间】:2013-03-13 20:05:52
【问题描述】:

我必须连接到文件中托管的数据库。而不是指向一个端口,我必须指向一个像这个 sqlite 连接字符串这样的文件:

"jdbc:sqlite:database/users.db"

但是当路径上有空格时,我不知道如何指定路径:

"jdbc:sqlite:C:\\Documents and Settings\\users.db"
"jdbc:sqlite:C:/Documents\ and\ Settings/users.db"

这些都不起作用。

最好我还希望能够以与系统无关的方式指定此路径(即在 Windows 和 linux 上都可以使用)。无需对每个进行特定处理。

【问题讨论】:

  • 只使用正斜杠而不转义任何空格怎么样?
  • 是的,这也行不通。
  • 你得到什么错误?
  • @NishantShreshth 我做了更多测试,你是对的,没有逃逸空间它可以工作。我遇到了一个不相关的问题,它也影响了连接的创建。最后我有两个错误,但我以为我只有一个。非常感谢。
  • 你试过这个“jdbc:sqlite:C:\\Documents\ and\ Settings\\users.db”吗?

标签: java sqlite jdbc hsqldb


【解决方案1】:

事实证明 Nishant 是对的,我根本不需要转义字符或使用反斜杠。这有效:

"jdbc:sqlite:C:/Documents and Settings/users.db"

我实际上已经尝试过了,但是另一个错误阻止了我看到它工作。我有两个错误,但我认为我只有一个。

【讨论】:

    【解决方案2】:

    我相信 JDBC 转义是使用 {}。这样就变成了

    "jdbc:sqlite:{C:/Documents and Settings/users.db}"
    

    "{jdbc:sqlite:C:/Documents and Settings/users.db}"
    

    或它的变体。

    【讨论】:

    • 这不是 JDBC 转义所做的。 JDBC 转义仅适用于 JDBC 规范中明确指定的某些函数和 SQL 构造。
    【解决方案3】:

    对于与系统无关的分隔符,您应该使用标准 API 中的File.separator

    File (Java SE 7)

    系统相关的默认名称分隔符。该字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,该字段的值为 '/';在 Microsoft Windows 系统上,它是 '\'。

    File.separator 将此char 作为String 返回。

    【讨论】:

      【解决方案4】:

      我们也可以尝试双反斜杠,它对我有用

      "jdbc:sqlite:C:\\Documents and Settings\\users.db"
      

      【讨论】:

        猜你喜欢
        • 2020-05-18
        • 2014-09-29
        • 2012-05-10
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 2014-09-07
        • 1970-01-01
        相关资源
        最近更新 更多