Boa tarde a todos, tenho o seguinte problema, no meu banco de dados tenho duas tabelas: jogador e posição. Tenho uma tela feita em jsp, quando preencho o campo posição, está se referindo a posição q o jogador joga. Estou conseguindo cadastrar o jogador. Neste campo Posição, quero redirecionar o preenchimento deste campo para a tabela posicao, estou com dificuldades para implementar isto no código. Quero fazer isto no JogadorDao. Pq se ñ teria q fazer um PosicaoDao, aí daria para popular a tabela posicao
Codigo JogadorDaopackage br.com.Projeto.Dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import br.com.Projeto.bean.Jogador;
import br.com.Projeto.bean.Posicao;
public class JogadorDAO {
private Connection conexao;
public JogadorDAO() throws SQLException {
this.conexao = new ConnectionFactory().getConnection();
}
public void adicionaJogador(Jogador jogador) throws SQLException {
String sql = "insert into jogador(codigo_registro,nome,data_nascimento)"
+ "value(?,?,?)";
PreparedStatement stm = conexao.prepareStatement(sql);
stm.setString(1, jogador.getCdRegistro());
stm.setString(2, jogador.getNomeJog());
stm.setDate(3, new Date(jogador.getDtNascimento().getTimeInMillis()));
stm.execute();
stm.close();
conexao.close();
}
public List<Jogador> recuperarJogador() throws SQLException {
String sql = "select * from jogador";
PreparedStatement stm = conexao.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
List<Jogador> jogadores = new ArrayList<Jogador>();
while (rs.next()) {
Jogador j = new Jogador();
j.setId(rs.getLong("id_jogador"));
j.setNomeJog(rs.getString("nome"));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("data_nascimento"));
}
rs.close();
stm.close();
conexao.close();
return jogadores;
}
public void adicionaPosicao(Posicao posicao) throws SQLException { //aqui pensei que, quando eu preenchece o campo posição iria adicionar na tabela posicao
String sql = "insert into posicao(id_posicao, nome_posicao)"
+ "values(?,?)";
PreparedStatement stm = conexao.prepareStatement(sql);
stm.setString(1, posicao.getId());
stm.setString(2, posicao.getNomePosicao());
stm.execute();
stm.close();
}
public List<Posicao> recuperaPosicaos() throws SQLException {
String sql = "select from posicao";
PreparedStatement stm = conexao.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
List<Posicao> posicaos = new ArrayList<Posicao>();
while (rs.next()) {
Posicao p = new Posicao();
p.setId(rs.getString("id_posicao"));
p.setNomePosicao(rs.getString("nome_posicao"));
}
rs.close();
stm.close();
conexao.close();
return posicaos;
}
}
package br.com.Projeto.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.Projeto.Dao.JogadorDAO;
import br.com.Projeto.bean.Jogador;
public class AdicionaJogador extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Jogador jogador = new Jogador();
jogador.setNomeJog(request.getParameter("nome"));
jogador.setCdRegistro(request.getParameter("cdRegistro"));
SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");
Date dtNascimento = null;
try {
dtNascimento = sf.parse(request.getParameter("dtNascimento"));
} catch (ParseException e) {
e.printStackTrace();
response.sendRedirect("/projetoFinalJspServlet/erro.jsp");
}
Calendar dtNascimentoCalendar = Calendar.getInstance();
dtNascimentoCalendar.setTime(dtNascimento);
jogador.setDtNascimento(dtNascimentoCalendar);
jogador.setIdPosicao(request.getParameter("idPosicao"));
jogador.setIdTime(request.getParameter("idTime"));
if(request.getParameter("id").isEmpty()){
try {
JogadorDAO dao = new JogadorDAO();
dao.adicionaJogador(jogador);
response.sendRedirect("/projetoFinalJspServlet/sucesso.jsp");
} catch (SQLException e) {
e.printStackTrace();
response.sendRedirect("/projetoFinalJspServlet/erro.jsp");
}
}
}
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Tela para adicionar jogadores</title>
</head>
<body>
<center>
<h2>Registrar jogadores</h2>
</center>
<center>
<form action="AdicionaJogador" method="get">
<table border="5">
<input type="hidden" name="id" value="${Jogador.id }">
<tr>
<td>Nome:</td>
<td><input type="text" value="${Jogador.nome }" name="nome" size="40">
</tr>
<tr>
<td>Data de Nascimento:</td>
<td><input type="text" value="<fmt:formatDate value='${Jogador.dtFndacao.jogador}' pattern='dd/MM/yyyy'/>" name="dtNascimento" size="40" maxlength="10"></td>
</tr>
<tr>
<td>Posição:</td>
<td><input type="text" value="${Jogador.Posicao }" name="Posicao" size="40"></td>
</tr>
<tr>
<td>Times:</td>
<td>
<select name="idTime" class="times"> //aqui ñ sei mandar a lista para a tela
<option value="">Selecione:</option>
<c:forEach var="nome_time" items="${recuperarTimes}">
<option value="${Jogador.nome_time }">${nome_time.Time }</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>Código de Registro:</td>
<td><input type="text" value="${Jogador.cdRegistro }" name="cdRegistro" size="40"> </td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="Gravar" value="Gravar"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Também to com outro problema, quero preencher um combobox com os times ja cadastrados na tabela time.
List de timespublic List<Time> recuperarTimes() throws SQLException {
String sql = " SELECT * FROM time";
conexao = getConection().getConnection();
PreparedStatement stm = conexao.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
List<Time> times = new ArrayList<Time>();
while (rs.next()) {
Time t = new Time();
t.setId(rs.getString("id_time"));
t.setCdRegistro(rs.getString("codigo_registro"));
t.setNomeTime(rs.getString("nome_time"));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("data_fundacao"));
t.setDtFundacao(data);
times.add(t);
}
rs.close();
stm.close();
conexao.close();
return times;
}
}
Alguém poderia dá uma idéia.