teradata jdbc连接字符串中的转义字符

teradata jdbc连接字符串中的转义字符,jdbc,teradata,Jdbc,Teradata,我有一个teradata数据库名称,其中包含一个破折号- 在网上搜索,但没有结果。有人知道如何转义jdbc连接字符串中的特殊字符吗?字符串如下所示: jdbc:teradata://HostName/DATABASE=Database-Name 当我用这个url创建连接时,我得到了语法错误。还尝试将数据库参数放在单引号或双引号中,并用{}包围特殊字符 谢谢你的帮助 您是否尝试过Java中应该是转义字符的\字符 jdbc:teradata://HostName/DATABASE=Database

我有一个teradata数据库名称,其中包含一个破折号-

在网上搜索,但没有结果。有人知道如何转义jdbc连接字符串中的特殊字符吗?字符串如下所示:

jdbc:teradata://HostName/DATABASE=Database-Name
当我用这个url创建连接时,我得到了语法错误。还尝试将数据库参数放在单引号或双引号中,并用{}包围特殊字符


谢谢你的帮助

您是否尝试过Java中应该是转义字符的
\
字符

jdbc:teradata://HostName/DATABASE=Database\-Name

终于在这里找到了答案:。正确的方法是将参数名称和值用单引号括起来:

jdbc:teradata://HostName/'DATABASE=Database-Name'

更新:不,这不起作用,请参阅下面的评论。回答我自己的问题:

我的问题是,我没有意识到我的数据库名称最后有一些尾随空格

TeraDriver使用单引号转义空格和逗号。这意味着数据库名称应该用单引号括起来。如果没有单引号,则空格和逗号被视为参数值的结尾。如果数据库名称中有单引号,则它们应显示为两个单引号字符

'Database-Name   '
单引号中的任何内容都将与sql查询一起使用:“数据库名称”。要转义“-”,我们需要双引号。因此,应使用正确顺序的单引号和双引号:

"jdbc:teradata://HostName/DATABASE='\"Database-Name\"'"

尝试不使用数据库的连接字符串,并在创建连接后使用
connection.setCatalog()
。不幸的是,这没有帮助。然后我得到了这个错误:语法错误:在单词“xxx”和请求结尾之间应该有一些东西。嗯,不。这不起作用。这只会忽略数据库参数。是否尝试将数据库名称用双引号括起来?jdbc:teradata://HostName/DATABASE=“数据库名称”