比如我现在要把一组SQL写到资源文件中
SQL_COMMON_001=.................
SQL_COMMON_002= SELECT NAME ,AGE(回车换行)
                FROM EMP(回车换行)
                WHERE .............
SQL_COMMON_003=........这样,我在读取SQL_COMMON_002的时候,只能读取到第一行的内容:SELECT NAME ,AGE(回车换行)
如果我SQL很长,又不能回车换行,如果写在一行写起来很麻烦!有什么好的方法吗?

解决方案 »

  1.   

    在 JDK 文档中,Internationalization Frequently Asked Questions 有这么一段话:
    How do I specify non-ASCII strings in a properties file?
    You can specify any Unicode character with the \uXXXX notation. (The XXXX denotes the 4 hexadecimal digits that comprise the Unicode value of a character.) For example, a properties file might have the following entries:s1=hello there
    s2=\uff2d\uff33\u30b4
    查一下回车的 unicode 吧。
      

  2.   

    感谢,但我将SQL语句写入资源文件中,是为了在程序中调用和传入动态参数
    有没有好的方法可以来存取SQL语句?能给点建议吗?
      

  3.   

    1. 没有必要将 SQL 文件写在资源文件中,我看不出来比直接写在 java 文件中好在哪里。
    2. 如果要单独放出来,可以用 xml 文件。
      

  4.   

    将SQL文件写在资源文件中:
    如果一条SQL语句有上百行,并且动态条件很多,如果放到资源文件中.从资源文件中读取的时候,我只用一个ID找到这条SQL,再加一个字符串数组作为动态条件,这样读取出来的就是一条完整的SQL了,再来执行这个字符串,就方便多了!
      

  5.   

    对于很多情况是:
    sql = ...
    if ...
      sql + = " and t1 = ...";
    else
      sql + = " and s2 = ...";
    将 SQL 文件写在资源文件中根本应付不了这么简单的事情。
      

  6.   

    为什么不行呢?
    我可以在资源文件中写:
    SQL_ID_000=SELECT NAME FORM {0} WHERE {1}这样我的表名,可查询条件都可以动态生成?
      

  7.   

    你甚至可以这样写,
    SQL_ID_000= {0}将SQL语句中全部放在程序中!用预处理来传参数太麻烦,而且只能传某一个属性值!如果SQL有上百行内容放在程序中也难看,所以我选择写在资源文件
      

  8.   

    如果用 SQL_ID_000= {0},有何必要从 xml 中读入 SQL_ID_000 ?那个参数还不是从 java 程序中放进去的?
    我总觉得很荒唐。在我的印象中,这种写法不是普遍的。我看的开源代码以及商业代码都不少,这种写法不敢恭维。
      

  9.   

    我举这个例子:SQL_ID_000= {0}
    只是特别说明一下可以这样写,在项目中不一定要这样写!jacklondon(jacklondon)不用这么钻牛角吧!我参加的项目中用到的SQL有接近上千条,为了方便管理和参数传入,是放在资源文件中!这样是正常的,WEBPUMP封装的STRUTS技术中,就是这样用的!
      

  10.   

    举例说明,查询页面上,有十个输入框,查询如果写普通 SQL 如下:
    String sql = "select * from tbl where 1 = 1 ";
    if(!StringUtils.isEmpty(t1)){
        sql += " and t1 = " + t1;
    }
    if(!StringUtils.isEmpty(t2)){
        sql += " and t2 = " + t2;
    }
    if(!StringUtils.isEmpty(t3)){
        sql += " and t3 = " + t3;
    }
    ...
    if(!StringUtils.isEmpty(t10)){
        sql += " and t10 = " + t10;
    }
    请教一下,按照你的办法怎么写?会比以上更简单么?当然这里应该用 prepared statement.