Olá pessoal, estou com um probleminha aqui e gostaria de uma ajuda por favor, estou tentando fazer um insert num tabela JOGADOR com FK, mas antes pensando a ID do USUARIO, porém não consigo pegar o ID do usuário no select para referenciar no insert.
se na variável abaixo eu deixar 0 ele não achará nenhum usuário, pq não tem ninguém com 0 no ID e ai retorna o erro abaixo e não adiciona nada na DB.
int idresult = 0;
Erro de SQLjava.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
Erro no SQL2com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (nadalspringmvc
.jogador
, CONSTRAINT jogador_ibfk_1
FOREIGN KEY (ID_USUARIO
) REFERENCES usuario
(ID_USUARIO
))
Mas se eu mudar a variável para o numero 9 onde existe um usuário com essa ID e por sinal é o mesmo que eu quero inserir quando tento buscar pela SESSION, ele adiciona no banco, mas pq eu setei o 9 e não porque ele buscou no SELECT e me retorna esse erro.
Erro de SQLjava.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
CREATE TABLE USUARIO (
ID_USUARIO int NOT NULL AUTO_INCREMENT,
LOGIN VARCHAR (50) NOT NULL,
SENHA VARCHAR (8) NOT NULL,
PRIMARY KEY (ID_USUARIO)
);
CREATE TABLE JOGADOR (
ID_JOGADOR int NOT NULL AUTO_INCREMENT,
NOME_JOGADOR VARCHAR (20) NOT NULL,
ID_USUARIO int,
PRIMARY KEY (ID_JOGADOR),
FOREIGN KEY (ID_USUARIO) REFERENCES USUARIO(ID_USUARIO)
);
public void inserirJogador(JogadoresDTO jogador, String sessionLogin, String sessionSenha) {
conexao();
int idresult = 0;
try {
try (PreparedStatement ps = this.con.prepareStatement("SELECT id_usuario FROM usuario WHERE login = '" + sessionLogin + "' AND senha = '" + sessionSenha + "';")) {
ps.setString(1, sessionLogin);
ps.setString(2, sessionSenha);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
int tempID = rs.getInt("id_usuario");
jogador.setId(tempID);
idresult = jogador.getId();
} else {
System.out.println("Cliente não encontrado");
}
}
}
con.close();
} catch (SQLException e) {
System.out.println("Erro de SQL" + e);
}
try {
try (PreparedStatement ps2 = this.con.prepareStatement("INSERT INTO JOGADOR (nome_jogador, id_usuario) VALUES (?,?);")) {
ps2.setString(1, jogador.getNome());
ps2.setInt(2, idresult);
ps2.execute();
}
con.close();
} catch (SQLException e) {
System.out.println("Erro no SQL2" + e);
}
}