Na classe DAO da o seguinte erro quando vou Alterar:
“No value specified for parameter 7”
codigo DAO:
[code]//ProdutoDAO.java
package Persistencia;
import Modelo.Produto;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//import Modelo.Turma;
public class ProdutoDAO {
//Método incluir
public boolean incluir (Produto produto)throws Exception{
//verifica se já existe um produto cadastrado
if(this.consultar(produto)==true){
return false; // se existir, retorna falso
}
else{ //se não existir, deixa cadastrar
Connection conn = null;
//objeto que executa um comando sql
PreparedStatement stmt = null;
//? significa um campo a ser preenchido
String sql = "INSERT INTO produto VALUES (?,?,?,?,?,?)";
conn = ConnectionFactory.getConnection();
stmt = conn.prepareStatement(sql);
stmt.setInt(1, produto.getCodigo());
stmt.setInt(2, produto.getCodigo_fornecedor());
stmt.setString(3, produto.getNome_produto());
stmt.setInt(4, produto.getQuantidade_estoque());
stmt.setDouble(5, produto.getValor_custo());
stmt.setDouble(6, produto.getValor_venda());
stmt.executeUpdate();
stmt.close();
ConnectionFactory.closeConnection(conn);
return true;
//Cadastrou um novo produto
} //fim else
} // fim do método incluir
public boolean consultar (Produto produto)throws Exception{
String sql = "SELECT * FROM produto WHERE codigo = ?";
Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, produto.getCodigo());
//armazena o resultado da query
ResultSet rs = stmt.executeQuery();
boolean produtoFoiEncontrado = rs.next();
if (produtoFoiEncontrado == true){
int codigo_fornecedor = rs.getInt("codigo_fornecedor");
produto.setCodigo_fornecedor(codigo_fornecedor);
// String nome_produto = rs.getString("nome_fornecedor");
// produto.setNome_produto(nome_produto);
int quantidade_estoque = rs.getInt("quantidade_estoque");
produto.setQuantidade_estoque(quantidade_estoque);
Double valor_custo = rs.getDouble ("valor_custo");
produto.setValor_custo(valor_custo);
Double valor_venda = rs.getDouble ("valor_venda");
produto.setValor_venda(valor_venda);
}
rs.close();
stmt.close();
ConnectionFactory.closeConnection(conn);
if (produtoFoiEncontrado == true)
return true;
else
return false;
}
public boolean alterar (Produto produto) throws Exception{
String sqlSelect = "SELECT * FROM produto WHERE codigo = ?";
Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmtSelect = conn.prepareStatement(sqlSelect);
stmtSelect.setInt(1, produto.getCodigo());
ResultSet rs = stmtSelect.executeQuery();
boolean produtoExiste = rs.next();
if (produtoExiste == true){
String sqlUpdate = "UPDATE produto SET codigo = ?, codigo_fornecedor = ?, nome_produto = ?, quantidade_estoque = ?, valor_custo = ?, valor_venda = ? WHERE codigo = ?";
PreparedStatement stmtUpdate = conn.prepareStatement(sqlUpdate);
stmtUpdate.setInt(1, produto.getCodigo());
stmtUpdate.setInt(2, produto.getCodigo_fornecedor());
stmtUpdate.setString(3, produto.getNome_produto());
stmtUpdate.setInt(4, produto.getQuantidade_estoque());
stmtUpdate.setDouble(5, produto.getValor_custo());
stmtUpdate.setDouble(6, produto.getValor_venda());
stmtUpdate.executeUpdate();
stmtUpdate.close();
stmtSelect.close();
rs.close();
ConnectionFactory.closeConnection(conn);
return true;
}
else{
stmtSelect.close();
rs.close();
ConnectionFactory.closeConnection(conn);
return false;
}
}
public boolean excluir (Produto produto)throws Exception{
String sql = "DELETE FROM produto WHERE codigo = ?";
Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, produto.getCodigo());
int numeroLinhasAfetadas = stmt.executeUpdate();
stmt.close();
ConnectionFactory.closeConnection(conn);
if (numeroLinhasAfetadas > 0)
return true;
else
return false;
}
}[/code]
Se alguém poder me ajudar, obrigado