Ajuda em QUERY

sql = String.format(“INSERT INTO filme (nome, nacionalidade, copias, "
+ “categoria) VALUES (’%s’, ‘%s’, ‘%d’, 'SELECT id FROM categoria” +
" WHERE nome = ‘%s’’)”, f.getNome(), f.getNacionalidade(),
f.getCopias(), f.getCategoria());

ou seja:

INSERT INTO filme (nome, nacionalidade, copias, categoria) VALUES (‘James bond’, ‘brasil’, ‘10’, ‘SELECT id FROM categoria WHERE nome = ‘Futebol’’)

que resulta:

Exception in thread “main” java.sql.SQLException: 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 ‘Futebol’’)’ at line 1

o que fazer?

Ao invés de ‘Futebol’’ não deveria ser ‘Futebol’ ??
Porque você não usa PreparedStatement ???

q banco vc esta usando ?

por exemplo…se for posges…quando o campo for inteiro…nao precisa desse negocio (nao lembro o nome) => '…so o numero

 INSERT INTO filme (nome, nacionalidade, copias, categoria) VALUES ('James bond', 'brasil', '10', 'SELECT id FROM categoria WHERE nome = 'Futebol'')

INSERT INTO filme (nome, nacionalidade, copias, categoria) VALUES (‘James bond’, ‘brasil’, 10, ‘SELECT id FROM categoria WHERE nome = ‘Futebol’’)

com relacao ao resto nao sei responder

[quote=thiago.correa]Ao invés de ‘Futebol’’ não deveria ser ‘Futebol’ ??
Porque você não usa PreparedStatement ??? [/quote]

Ah positivo estou usando o prepared, porém como é uma subconsulta, eu não consegui usando os (?, ?, ?) do PreparedStatement

EDIT

consegui assim:

sql = String.format("INSERT INTO filme (nome, nacionalidade, copias, " + "categoria) VALUES ('%s', '%s', '%d', (SELECT id FROM categoria" + " WHERE nome = '%s'))", f.getNome(), f.getNacionalidade(), f.getCopias(), f.getCategoria());

tem outra forma que seja mais otimizada?

Estou usando o preparedStatement, o que ele difere do Statement? Só a formatação ?

Bom consegui… Agora preciso UNIR essas 2 select’s

sql = "SELECT f.nome, f.nacionalidade, f.categoria, f.copias, f.id " +
			"c.nome, c.preco FROM filme f, categoria c WHERE c.nome IN (SELECT c.nome FROM " +
			"categoria c WHERE c.id = f.categoria)";
			
SELECT data_locacao FROM locacao WHERE ID = (SELECT locacao FROM filme_locacao WHERE filme = f.id)

tem como?