Erro de Sintax

5 respostas
java
B

Boa noite Estou com o erro de sintaxe ao executar uma query no java
no mysql no caso HeidiSql me retorna a query correta mas quando passei pro java e apontei os paramentros deu errro de sintaxe.

String sql = "SELECT b.idViagem, a.modelo, b.dataa,(SELECT b.idViagem, a.modelo, b.dataa, (SELECT nameMotorista FROM tbl_motorista INNER JOIN tbl_viagem \n" +
	"	ON tbl_motorista.IdMotorista=tbl_viagem.idMotorista WHERE idViagem="+num_viagem+")\n" +
	",b.percurso,b.adiantamento,b.freteIda,b.freteVolta,b.totalEntrada,b.kmIda,b.kmVolta,b.qtdLitros,\n" +
	"b.media,b.kmPercorrido,b.liquidoComAdiantamento,b.freteReceber,b.liquidoViagem,b.oleoDiesel,b.arla,b.pedagio,\n" +
	"b.comissao,b.acessorio,b.estacionamento,b.chapa,b.gorjeta,b.outrasDesp,b.totalSaida\n" +
	"\n" +
	"FROM veiculo as A\n" +
	"INNER JOIN tbl_viagem as B on a.idVeiculo = b.idVeiculo WHERE idViagem=" + num_viagem;

5 Respostas

B

Obs Parametro é num_viagem

javaflex

Informa a mensagem de erro.

B

eu creio que o erro esteja na concatenação do primeiro parametro

javaflex

Debuga e pega o retorno da variavel sql pra saber exatamente o que é enviado pro banco e testar direto no HeidiSql e saber melhor onde ta o problema. Pode ser que alguma variavel esteja vindo em branco quando concatena na linha 8, a exemplo de num_viagem.

No geral evite concatenar variaveis, use preparedparameters https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

Lucas_Camara

Extrai o select do seu código e arrumei a identação, veja:

SELECT
	b.idViagem,
	a.modelo,
	b.dataa,
	(
		SELECT
			b.idViagem,
			a.modelo,
			b.dataa,
			(
				SELECT nameMotorista
				FROM tbl_motorista
				INNER JOIN tbl_viagem ON tbl_motorista.IdMotorista = tbl_viagem.idMotorista
				WHERE idViagem = :num_viagem
			),
			b.percurso,
			b.adiantamento,
			b.freteIda,
			b.freteVolta,
			b.totalEntrada,
			b.kmIda,
			b.kmVolta,
			b.qtdLitros,
			b.media,
			b.kmPercorrido,
			b.liquidoComAdiantamento,
			b.freteReceber,
			b.liquidoViagem,
			b.oleoDiesel,
			b.arla,
			b.pedagio,
			b.comissao,
			b.acessorio,
			b.estacionamento,
			b.chapa,
			b.gorjeta,
			b.outrasDesp,
			b.totalSaida
		FROM veiculo as A
		INNER JOIN tbl_viagem as B on a.idVeiculo = b.idVeiculo
		WHERE idViagem = :num_viagem

Há erro de sintaxe no SQL da consulta.

Criado 16 de outubro de 2019
Ultima resposta 18 de out. de 2019
Respostas 5
Participantes 3