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?