JDBC: string de SQL grande de mais para usar aspas e '+'

Olá pessoal!

Não sei onde perguntar sobre isso, por isso postei aqui.

tenho a seguinte string sql para JDBC:

SELECT 
escola.id as idescola, 
escola.nome as nomeescola, 
pessoa.id as idpessoa, 
pessoa.nome as nomepessoa, 
usuario.tipo_usuario as tipousuario
FROM escola 
inner join usuario
on escola.id=usuario.fk_escola 
inner join pessoas
on usuario.fk_pessoa=pessoa.id

para colocar quebras de linha no codigo java é necessário fazer isso:

"SELECT "
+"escola.id as idescola, "
+"escola.nome as nomeescola, "
+"pessoa.id as idpessoa, "
+"pessoa.nome as nomepessoa, "
+"usuario.tipo_usuario as tipousuario"
+"FROM escola "
+"inner join usuario"
+"on escola.id=usuario.fk_escola "
+"inner join pessoas"
+"on usuario.fk_pessoa=pessoa.id"

Existe alguma forma pra não precisar ficar adicionando aspas e ‘+’ ?
isso facilitaria alguns testes que tenho que realizar.

Java não é C#, você tem de usar as aspas mesmo. Sorry …

Como você deve saber, em C# é possível você usar a seguinte sintaxe:

string sql = @"
    SELECT   
    escola.id as idescola,   
    escola.nome as nomeescola,   
    pessoa.id as idpessoa,   
    pessoa.nome as nomepessoa,   
    usuario.tipo_usuario as tipousuario  
    FROM escola   
    inner join usuario  
    on escola.id=usuario.fk_escola   
    inner join pessoas  
    on usuario.fk_pessoa=pessoa.id  
";

Isso foi sugerido no Java ( http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000034.html ) mas não foi aceito ( https://blogs.oracle.com/darcy/entry/project_coin_final_five )

Alternativamente, você pode tentar ler as strings de um arquivo-texto.

[quote=entanglement]Java não é C#, você tem de usar as aspas mesmo. Sorry …

Isso foi sugerido no Java ( http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000034.html ) mas não foi aceito ( https://blogs.oracle.com/darcy/entry/project_coin_final_five )

Alternativamente, você pode tentar ler as strings de um arquivo-texto. [/quote]

Obrigado entanglement.

Eu tinha visto C# (com arroba) e python (com aspas triplas).
fazia muito tempo que procurava uma forma de fazer isso com Java e ontem dediquei o dia a buscar uma forma.
Eu não sei pq ainda insisto em Java…
Encontrei algumas gambiarras e pensei que alguém pudesse ter inventado outras melhores.

Olha a função S() nesse post:


Olá,

Em uma situação onde você é forçado a usar JDBC “na unha”, eu colocaria as queries dentro de um arquivo XML. Existem APIs boas e simples para isso como JaxB. Faça algo assim:

<xml ...>
     <consultas> 
           <query name="buscarClientes">
                <sql>
                     select ...
                </sql>
           </query>

           <query name="buscarProdutos">
                <sql>
                     select ...
                </sql>
           </query>
     
     </consultas>

Depois crie as classes que mapeiam os elementos query e consultas, usando as anotações do JaxB. Mantenha as instâncias da classe na memória durante todo o ciclo de vida da aplicação, para eliminar o gargalo de conversão xml/objeto, e pronto.

Se você precisa de algo semelhante a isso frequentemente, crie um programa onde você cola o código SQL (talvez de um ambiente qualquer como o SQL Developer) e, ao apertar um botão, joga o código SQL já com as aspas (duplicadas se for o caso, escapadas etc.) na Área de Transferência (clipboard).
Eu gosto muito de escrever programinhas que fazem exatamente isso porque não preciso escrever um plugin para o meu ambiente de trabalho (Eclipse? Visual Studio? Notepad? vi? sei lá).

Note que o problema é sempre mais chato que parece, porque fora pôr as aspas no começo e no fim de cada linha, e pôr espaços adicionais se for o caso, você também precisa duplicar aspas e outras coisas chatas.

cara aqui na empresa um piá fez um programinha para formatar isso, eu ja fiz muitos relatórios com 400 linhas de sql kkkkkkkk, verdade
faça um programa pra vc tb, é simples

crie um jtextarea pra receber o valor em swing
no codigo vá adicionando os append e parando quando chegar no enter, meia hora vc faz, vai ficar assim

StringBuilder query = new StringBuilder(); query.append(" select pr.cod_produto , \n");

[quote=entanglement]Se você precisa de algo semelhante a isso frequentemente, crie um programa onde você cola o código SQL (talvez de um ambiente qualquer como o SQL Developer) e, ao apertar um botão, joga o código SQL já com as aspas (duplicadas se for o caso, escapadas etc.) na Área de Transferência (clipboard).
Eu gosto muito de escrever programinhas que fazem exatamente isso porque não preciso escrever um plugin para o meu ambiente de trabalho (Eclipse? Visual Studio? Notepad? vi? sei lá).

Note que o problema é sempre mais chato que parece, porque fora pôr as aspas no começo e no fim de cada linha, e pôr espaços adicionais se for o caso, você também precisa duplicar aspas e outras coisas chatas.

[/quote]

Eu tava fazendo algo parecido com vc.
eu pegava a string do fonte, jogava no javascript pra tirar as aspas e mais, copiava e colava no executor de comandos sql.
quando o sql ficava como quero, colava no javascript pra fazer o inverso e colava novamente no fonte.
Por isso, a solução do CarlosEduardoDantas parece mais prática e não depende de nada fora do projeto.
Mesmo assim, agradeço muito a sugestão. Vou continuar acompanhando o tópico. Talvez surjam outras idéias.