Como eliminar erro de consulta de SQL

String query=“insert into soltura ( id_preso ) values ((select (Id) from preso where Id=”+id;
Está a me dizer que tem erro na instrução, alguém poderia me ajudar…?
Preciso também de um crud de pagamento de mensalidade de uma escola, se alguém tiver o código agradecia. Boa noite.

Boa noite campeão.
Essa não é a melhor maneira de se fazer isso, mas segue:

String query = String.format("INSERT INTO soltura ( id_ preso ) VALUES ( SELECT id FROM preso WHERE id = %s LIMIT 1 )", id);

Quanto ao crud que está pedindo, isso não é uma dúvida e sim um pedido bem grandinho que acho que você não vai conseguir aqui.

Da uma pesquisada no Github:

Muito obrigado.
O %s para que serve?

é só um marcador para que o método format coloque o id naquele ponto.

1 curtida

Onde tem o %s , eu preciso pôr uma variável, posso fazê-lo?

Não! A string fica exatamente como está:

Long id = 1L;
String.format("Teste %s, teste", id);

A ou as variáveis são colocadas após a string separadas por vírgula.

Agora pretendo aumentar mais um atributo na tabela soltura,como faço para colocar?
Será possível?
Está assim…
String query = String.format(“INSERT INTO soltura ( id_ preso ) VALUES ( SELECT id FROM preso WHERE id = %s LIMIT 1 )”, id);

Quero aumentar mais o atributo id_func no insert

Esquece o String.format ou podes ter problemas de SQL Injection.
Usa PreparedStatement.

1 curtida

@Aldair-DC20
Realmente existe a possibilidade de SQLInjection mas como parecia algo feito para aprendizado, não vi problema em só seguir o exemplo da linha de código que foi passada. Caso queira algo mais profissional vai precisar passar mais código para termos o contexto.

Agora vamos para query modificada.

String query = String.format(“INSERT INTO soltura ( id_ preso, id_func ) VALUES ( (SELECT id FROM preso WHERE id = %s LIMIT 1),  %s)”, id, id_func);

É mais facil usar logo o PreparedStatement do que usar String.format