文件路径上带有空格的 JDBC 连接字符串(sqlite、hsqldb)

Posted

技术标签:

【中文标题】文件路径上带有空格的 JDBC 连接字符串(sqlite、hsqldb)【英文标题】:JDBC connection string with spaces on file path (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”吗? 【参考方案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"

【讨论】:

以上是关于文件路径上带有空格的 JDBC 连接字符串(sqlite、hsqldb)的主要内容,如果未能解决你的问题,请参考以下文章

带有忽略大小写的 JDBC URL 不适用于 H2 数据库连接

JDBC的应用实例

带有 Service Pack 2 的 SQL Server Developer Edition 的 jTDS 连接字符串

带有自定义模式的 jdbc redshift 连接字符串

怎么连接sqlserver数据库

如何输入带有空格的路径?