Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,有没有一种简单的方法可以在不转义引号的情况下使用包含大量双引号的长字符串?_Java_Sql - Fatal编程技术网

在java中,有没有一种简单的方法可以在不转义引号的情况下使用包含大量双引号的长字符串?

在java中,有没有一种简单的方法可以在不转义引号的情况下使用包含大量双引号的长字符串?,java,sql,Java,Sql,我有一个很长的SQL字符串,其中有很多双引号,在使用前必须对其进行转义。有没有一种简单的方法可以做到这一点,比如从属性文件中读取字符串 FOR E.G.: SELECT (SELECT EXTRACTVALUE(XMLTYPE(COL1), '//p:testRq/policy/testId', 'xmlns:me="wsdl.http://www.example.com/Test", xmlns:ns0="wsdl.http://www.example.com/Test", xmlns:p

我有一个很长的SQL字符串,其中有很多双引号,在使用前必须对其进行转义。有没有一种简单的方法可以做到这一点,比如从属性文件中读取字符串

FOR E.G.:
SELECT
  (SELECT EXTRACTVALUE(XMLTYPE(COL1), '//p:testRq/policy/testId', 'xmlns:me="wsdl.http://www.example.com/Test", xmlns:ns0="wsdl.http://www.example.com/Test", xmlns:p="http://www.example.com/Test", xmlns:s="http://www.w3.org/2003/05/soap-envelope", xmlns:xsd="http://www.w3.org/2001/XMLSchema", xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance", xmlns="http://www.example.com/Test"')
  FROM TESTTABLE
  WHERE TESTID =
    (SELECT MIN(TESTID)
    FROM TABLE2
    WHERE COL1 = COL2
    )
  ) "RESULT"

好的,解决这个问题很容易。我刚刚在一个orm xml文件中创建了一个命名的本机查询,并使用了其中的sql字符串。

您可以使用另一个字符并动态替换它

    String s = "Here's `Some quoted text`".replaceAll("`", "\"");

这里我使用反引号。

请使用双引号作为例外

尽量不要对表名使用保留字。如果必须使用双引号,您很快就会收到SQL语法错误

使用对象/关系映射生成SQL,然后问题也会消失。(JPA、日食、mybatis)

我会避免将SQL存储在其他地方,比如XML文件中。不利于开发和维护

我会选择:
. 使用java作为DSL编写类型安全SQL。

请给出一些示例,以便每个人都能轻松理解。您可以将文件中的字符串提供给java程序,然后读取该文件并获取整个字符串。您使用的是什么框架?普通JDBC?JPA?将db framework与JDO或JPA结合使用。使用原始SQL和字符串处理可能会出现SQL注入等关键问题。我会将其写入单独的文件中,并在需要时加载一次。我猜问题主要在于参数to
EXTRACTVALUE
,其中包含大量引号,而不是
“结果”
对象名称。