文件路径上带有空格的 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 数据库连接
带有 Service Pack 2 的 SQL Server Developer Edition 的 jTDS 连接字符串