Sistema JSP

7 respostas
vanvan_89

Olá pessoal.
Estou criando um pequeno sistema de clínica médica em JSP.
Mas estou com problema na hora de cadastrar médicos.
Ele está cadastrando Pacientes e Exames, mas não está cadastrando os Médicos.
Sozinha ainda não consegui identificar o erro.
Será que vocês poderiam me ajudar com isso?

Esse é o meu formulário para cadastrar médico: FormularioMedico.jsp

<%@ page contentType="text/html" language="java" import="java.sql.*"%>
<!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>Insert title here</title>
</head>

<%
Connection con = null;  
	Statement st = null;   
	try {  
		Class.forName("com.mysql.jdbc.Driver").newInstance();
	      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/scm","root", "1234");
	       st = con.createStatement();
	       
	}  catch (Exception e) {  
	   out.println("Não foi possível conectar ao banco: " + e.getMessage());
	}
	     %>	       
<body>

<SCRIPT language=JavaScript>
function validar(formulario) {
	if (formulario.tfNomeMedico.value == ''){
		alert ('O campo Nome não pode ficar em branco');
		formulario.tfNomeMedico.focus();
		return false;
	}
	
	if (formulario.tfCrm.value == ''){
		alert ('O campo Crm não pode ficar em branco');
		formulario.tfCrm.focus();
		return false;
		}
	
	return true;
}
</SCRIPT>	

<%

int id = -1;
int medico_id = -1;
String idp = (String)request.getParameter("medico_id");

if ( idp != null) medico_id = Integer.parseInt(idp);

String nome = "";
String crm = "";
//variavel que vai receber o valor selecionado no list/menu
String exame = "";

String sql;

if (medico_id != -1){ //buscar no banco o exame
	
	
	      sql = "select * from medico where medico_id = "+medico_id;
			ResultSet rs = st.executeQuery(sql);
			 if (rs.next()) {
				nome = rs.getString("nome");
				crm = rs.getString("crm");
				exame = rs.getString("exame");
		}
	} 

%>
<table width="780" border="1" align="center">
  <tr>
    &lt;td&gt;<img   >&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;form name="form1" method="post" action="CadastrarMedico.jsp"&gt;
    &lt;input name="tfId" type="hidden" id="tfId" value="&lt;%=medico_id%&gt;"&gt;
      &lt;label&gt;Nome do M&eacute;dico&lt;/label&gt;
      &lt;label&gt;
      &lt;input name="tfNomeMedico" type="text" id="tfNomeMedico"&gt;
      &lt;/label&gt;
      <p>
        &lt;label&gt;Crm&lt;/label&gt;
         &lt;label&gt;
        &lt;input name="tfCrm" type="text" id="tfCrm"&gt;
        &lt;/label&gt;
        &nbsp;</p>
      <p>Exame 
        &lt;label&gt;
        &lt;select name="cbExameMedico" id="cbExameMedico"&gt;
		
		 &lt;%
			 sql = "select * from exame";
			ResultSet rs = st.executeQuery(sql);
			 
			while (rs.next()) {%&gt;
				&lt;option value=&lt;%=rs.getString("exame_id") %&gt;&gt;&lt;%=rs.getString("descricao") %&gt;&lt;/option&gt;&lt;%
			}
			
			
			if ((id != -1) && (exame.equals(""))) out.println("selected"); 
         %&gt;
		 
        &lt;/select&gt;
        &lt;/label&gt;
      </p>
      <p>
        &lt;label&gt;
        &lt;input name="btCadastraMedico" type="submit" id="btCadastraMedico" value="Cadastrar"&gt;
        &lt;input name="frmMedico_id" type="hidden"  value="&lt;%=medico_id%&gt;"&gt;
        &lt;/label&gt;
        &lt;label&gt;
        &lt;input name="btCancelaMedico" type="submit" id="btCancelaMedico" value="Cancelar"&gt;
        &lt;/label&gt;
      </p>
    &lt;/form&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
E essa é a minha classe responsável por realizar o cadastro: CadastrarMedico.jsp
&lt;%@ page contentType="text/html" language="java" import="java.sql.*"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
int medico_id = -1;
String sID = (String)request.getParameter("frmMedico_id");

if (sID != null) medico_id = Integer.parseInt(sID);

int id = Integer.parseInt(request.getParameter("tfId"));
	String nome = request.getParameter("tfNomeMedico");
	String crm = request.getParameter("tfCrm");
	String exame = request.getParameter("cbExameMedico");
	int IdExame;
	//int exame = (Integer.parseInt(request.getParameter("cbExameMedico")));
	//exame = cbExameMedico.SelectedValue.ToString();
	//OIDProduto = cmbProduto.SelectedValue.ToString();
	
	String sql;
	String msn = "";
	Connection con;  
	try {  
		Class.forName("com.mysql.jdbc.Driver").newInstance();
	      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/scm","root", "1234");
	      Statement st = con.createStatement();
	      	
	      	//select para pegar o ID do exame
			sql = "select exame_id from exame where exame =" +exame;
	      	//variavel IdExame recebe o valor de sql
			IdExame = Integer.parseInt(sql);
	      
	     	if (medico_id == -1) {//cadastrar
	    		sql = "insert into medico(nome,crm,exame_id)values('"+
	    				nome+"','"+
	    				crm+"','"+
	    				IdExame+"')";
	     		msn = "medico cadastrado com sucesso";
	     	}else { //atualizar
	    		sql = "update medico set nome = '"+nome+
	    		                         ", crm = '"+crm+", exame_id = '"+IdExame+"where medico_id = "+medico_id;
	    		msn = "Medico atualizado com sucesso";
	    	}
	     	st.executeUpdate(sql);
	} catch (Exception e) {  
	   msn = "Não foi possível conectar ao banco: " + e.getMessage();
	}
%&gt;


&lt;/body&gt;
&lt;/html&gt;

Desde já, muito obrigado!

7 Respostas

edao69

boa tarde, retorna algum erro, alguma execao ao tentar cadastrar o médico?

vanvan_89

Não.
Não está retornando nenhuma exceção.

drsmachado

Os dados referentes ao médico chegam até a jsp que faz o cadastro?
Tenta fazer assim, ali na CadastrarMedico.jsp, coloca

out.println(nome+" "+crm);

para ter certeza que está recebendo os parâmetros.
Aliás, por quê está fazendo com scriptlets?

vanvan_89

Tá pegando o nome e o crm do médico.
Mas não está efetuando o cadastro.

vanvan_89

Quanto as scriptlets, foi meu professor que pediu.

drsmachado

Então está entrando em teu else. Aí, como ele tenta atualizar um medico que não está cadastrado, nada acontece.
Verifique se o código é -1 mesmo.

Ah, sim, aí está explicado. Provavelmente os próximos passos serão servlets.

vanvan_89

Será que o problema é o list/menu cbExameMedico?

Criado 6 de junho de 2011
Ultima resposta 7 de jun. de 2011
Respostas 7
Participantes 3