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
";
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.
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:
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.