Select não funciona

Bom dia pessoal.
Eu estou fazendo um select que pega várias tabelas, mas esta dando um erro de sintaxe.
Este select eu fiz no Banco e retornou corretamente.
eis o select:

stmt = con.prepareStatement("select c.Patrimonio,"+ "c.Ip,"+ "c.Nome,"+ "fu.Apelido,"+ "l.Local,"+ "c.Aquisicao,"+ "c.idMonitor," + "c.Tag,"+ "so.SO,"+ "c.SerialSo,"+ "of.Versao,"+ "c.SerialOffice,"+ "CONCAT(pm.idPlacaMae, '-', fab.Marca , '-' , pm.Modelo) AS PlacaMae,"+ "CONCAT(p.idProcessador, '-', fa.Marca , '-' , procm.Modelo , '-' , p.Velocidade) AS Processador,"+ "CONCAT(hd.Tamanho , ' - ' , hdt.Tipo) AS HD"+ "FROM computador c, "+ "funcionario fu, "+ "local l, "+ "sistemaoperacional so, "+ "office of, "+ "fabricante fa, "+ "fabricante fab, "+ "placamae pm, "+ "processadormodelo procm, "+ "processador p, "+ "hd, "+ "hdtipo hdt "+ "WHERE c.Patrimonio = ? AND " + "c.idFuncionario = fu.Matricula AND "+ "c.idLocal = l.idLocal AND "+ "c.idSo = so.idSo AND "+ "c.idOffice = of.idOffice AND "+ "c.idPlacaMae = pm.idPlacaMae AND "+ "fab.idFabricante = pm.idFabricante AND "+ "c.idProcessador = p.idProcessador AND "+ "fa.idFabricante = p.idFabricante AND "+ "p.idProcessadorModelo = procm.idProcessadorModelo AND "+ "c.idHd = hd.idHd AND "+ "hd.idHdTipo = hdt.idHdTipo ;"); stmt.setInt(1, patrimonio);

Eu estou achando que devido a quantidade de campos o texto do select é muito extenso e o stmt não esta guardando ele totalmente.
eis o erro aqui:

Consultado com Sucesso!!! Erro ComputadorDAO: public ResultSet consultaComputador(int patrimonio)) Erro: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'computador c, funcionario fu, local l, sistemaoperacional so, office of, fa' at line 1 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Telas.ComputadorCad.Inicializacao(ComputadorCad.java:120) at Telas.ComputadorCad.<init>(ComputadorCad.java:50) at Telas.Principal.actionPerformed(Principal.java:123) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Fabricante 2 vezes ?? porque ??

e porque não usas um JOIN cara ??? ia facilitar muito a tua vida…

"CONCAT(pm.idPlacaMae, '-', fab.Marca , '-' , pm.Modelo) AS PlacaMae,"+ "CONCAT(p.idProcessador, '-', fa.Marca , '-' , procm.Modelo , '-' , p.Velocidade) AS Processador,"+

nessa parte eu pego o a Marca da PlacaMãe, e a Marca do Processador.
ela é na mesma tabela.

Eu não domino o Join totalmente, teria como você dar um exemplo de join para eu implementa-lo ai.

É um select bem confuso e extenso não?
Primeiro, eu diria para copiar do seu código Java e colar na sua ferramente do MySQL e estar se realmente este select funciona. E prestou atenção ao erro? NullPointer, não está setando um valor null em algum lugar?

Talvez o parametro esteja indo nulo ou algo assim, enfim, faça um debug e verifique.
Queres outra dica? Não jogue tudo em uma única string.

Um jeito, no meu ponto de vista, muito mais adequado seria:

[code]StringBuffer sb = new StringBuffer();
sb.append(sua_string);
sb.append(continuação_da_sua_string);
//e assim sucessivamente

con.prepareStatement(sb.toString()); //faz a concatenação da sua string (select)[/code]

Era isso, abraços!

" (...) HD"+ "FROM (...) "
Falta um espaço

Isto mesmo: falta um espaço, veja a string completa:

select c.Patrimonio,c.Ip,c.Nome,fu.Apelido,l.Local,c.Aquisicao,c.idMonitor,c.Tag,so.SO,c.SerialSo,of.Versao,c.SerialOffice,CONCAT(pm.idPlacaMae, ‘-’, fab.Marca , ‘-’ , pm.Modelo) AS PlacaMae,CONCAT(p.idProcessador, ‘-’, fa.Marca , ‘-’ , procm.Modelo , ‘-’ , p.Velocidade) AS Processador,CONCAT(hd.Tamanho , ’ - ’ , hdt.Tipo) AS HDFROM computador c, funcionario fu, local l, sistemaoperacional so, office of, fabricante fa, fabricante fab, placamae pm, processadormodelo procm, processador p, hd, hdtipo hdt WHERE c.Patrimonio = ? AND c.idFuncionario = fu.Matricula AND c.idLocal = l.idLocal AND c.idSo = so.idSo AND c.idOffice = of.idOffice AND c.idPlacaMae = pm.idPlacaMae AND fab.idFabricante = pm.idFabricante AND c.idProcessador = p.idProcessador AND fa.idFabricante = p.idFabricante AND p.idProcessadorModelo = procm.idProcessadorModelo AND c.idHd = hd.idHd AND hd.idHdTipo = hdt.idHdTipo ;