Inserir FK de uma outra tabela a partir de uma coluna dela

.

Tente esse código. Onde você carrega o select, ponha no value, o valor do esp_codigo.

<label>Nome da Espécie.:
    		<select name="lista_especie" id="lista_especie">
            <%
			     String sql = "select * from especie order by esp_nome";
				 rs = st.executeQuery(sql);
				 while(rs.next())
				 { 
				    System.out.print(request.getParameter("especie"));      
				 %>
                     <option selected="selected" value="<%=rs.getString("esp_codigo")%>"><%=rs.getString("esp_nome")%></option> 
                     
                 <%
				 	 
				 }

                 %>
</select>

continua com o mesmo erro

na hora do insert dai eu deixa como lista_especie?

mudei para esp_codigo e tbm não deu certo

Só precisa mudar aquela parte do código que falei. Tente agora.

então, fiz isso ae
aquela parte da lista la mudei e coloquei no value o esp_codigo
igual vc mandou
mais continuou com o mesmo erro, ou acho que entendi errado então

Espera so um instante que vou fazer aqui e ver se dá certo.

Testei com Mysql, mas o resultado é o mesmo. A única mudança que fiz além do Banco foi aquele que falei pra vc. De pô o campo value no Select. Eis o código. Lembre-se é preciso ter algum valor na Tabela espécie.

[code]
<%@page contentType=“text/html” pageEncoding=“ISO-8859-1” import=“java.sql.*”%>

JSP Page

Cadastro de Raças

<%
 			      Class.forName("com.mysql.jdbc.Driver");
 		          Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test","root","admin");
			      Statement st = con.createStatement();
				  ResultSet rs;

	if (request.getParameter("acao") == null)
		{
		%>
Código.:

Nome da Raça.:

Nome da Espécie.: <% String sql = "select * from especie order by esp_nome"; rs = st.executeQuery(sql); while(rs.next()) { System.out.print(request.getParameter("especie")); %> "><%=rs.getString("esp_nome")%>

             <%

			 }

             %>
             </select>
        </label>
		<label></label>

<% } else {
   		String sqlinsertrac = "insert into raca (rac_nome, rac_especie) values ('"+request.getParameter("tf_raca")+
				  "','"+request.getParameter("lista_especie")+"')";

			   st.executeUpdate(sqlinsertrac);
		  	   response.sendRedirect("index.jsp");



	}%>

    <p> </p>
[/code]

Abraços!

puts, fiz as mesmas mudanças lá de somente o campo value, na tabela especie tem especie cadastrada na raça tbm tem raça,

porem qndo eu clico em gravar ele abenda a tela e gera aquela mensagem de erro…
tem alguma ideia do que pode ser?

Tipo assim, o combo box ele traz legal com os valores da especie, mais na hora de gravar é que dá o erro

Bom, pelo que vi seu código tá ok. Tem como vc fazer uma engenharia reversa de suas tabelas? Posta ai por favor. Igual como vc fez no banco que está sendo usado. To aguardando.

.

Você já tentou cadastrar uma raça pela query browser do próprio banco?

Por Favor, posta pra mim o código após renderização da página jsp.

segue

HTTP Status 500 - 
--------------------------------------------------------------------------------
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
org.apache.jasper.JasperException: An exception occurred processing JSP page /cadRaca.jsp at line 77

74: 	   		String sqlinsertrac = "insert into raca (rac_nome, rac_especie) values ('"+request.getParameter("tf_raca")+   
75:                       "','"+request.getParameter("lista_especie")+"')";   
76:   
77:                    st.executeUpdate(sqlinsertrac);
78: 			  	   response.sendRedirect("raca.jsp");
79: 				  
80: 	   


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

 root cause 
javax.servlet.ServletException: org.postgresql.util.PSQLException: ERRO: coluna "rac_especie" da relação "raca" não existe
  Posição: 29
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.cadRaca_jsp._jspService(cadRaca_jsp.java:158)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

 root cause 
org.postgresql.util.PSQLException: ERRO: coluna "rac_especie" da relação "raca" não existe
  Posição: 29
	org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
	org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
	org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
	org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
	org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:299)
	org.apache.jsp.cadRaca_jsp._jspService(cadRaca_jsp.java:142)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

 note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.

--------------------------------------------------------------------------------

A página antes de você submeter o form. Onde você carregar o select dos dados de espécies.

.

Só mais uma coisa, quando você entra na página de cadastro, a página renderizado em html para visualização no browser. Preciso que você visualize o código, copie e cole aqui.

.

No insert do banco de dados vc ta tentando passar uma String como valor para um campo inteiro. Tire aquelas aspas e tente novamente. Estou aguardando…

Assim?

	   		String sqlinsertrac = "insert into raca (rac_nome, rac_especie) values ('"+request.getParameter("tf_raca")+   
                      "','"+request.getParameter(lista_especie)+"')";   
  
                   st.executeUpdate(sqlinsertrac);
			  	   response.sendRedirect("raca.jsp");

se for ainda assim continua o erro

Original:

[code]String sqlinsertrac = “insert into raca (rac_nome, rac_especie) values (’”+request.getParameter(“tf_raca”)+
“’,’”+request.getParameter(“lista_especie”)+"’)";

               st.executeUpdate(sqlinsertrac);
		  	   response.sendRedirect("raca.jsp");

[/code]
Modificado:


String sqlinsertrac = "insert into raca (rac_nome, rac_especie) values ('"+request.getParameter("tf_raca")+   
                      "',"+request.getParameter("lista_especie")+")";   // quando você passar o valor '' para o banco ele entende como string e dará erro
  
                   st.executeUpdate(sqlinsertrac);
			  	   response.sendRedirect("raca.jsp");

Tente ai.