如何从mysql中检索jsp中与外键关联的两个表中的数据

时间:2014-03-29 12:35:27

标签: java mysql sql jsp

我在demo1数据库中有两个表。我必须从它们两个中检索数据。他们与外键有联系。但是,当我尝试我只获得数据形式的单个表,这是tbl1但没有获得引用的tbl2的数据。所以请帮助我。这是我为此所做的代码。有两个表tbl1和tbl2。并且tbl1的primarykey id在tbl2中被赋予外键,而tbl2的主键是id_tbl2。

<html>
    <head>
        <title>JSP Page</title>
    </head>
    <body>
     <%
            Connection con=null;
            Statement st=null;
            ResultSet rs=null;  
            try{
              Class.forName("com.mysql.jdbc.Driver");
              con=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo1","root","root");
              st=con.createStatement();
              rs=st.executeQuery("SELECT tbl1.name, tbl2.id_tbl2, tbl1.surname  FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id_tbl1");
                             while(rs.next())
              {
                  out.write("</br>");
                  out.write(rs.getString(1));

                out.write(rs.getString(2));
                out.write("</br>");

                 out.write(rs.getString(3));
                out.write("</br>");

                out.write(rs.getString(4));
                out.write("</br>");
                           } rs.close();con.close();
             }catch(Exception e){
              out.write(" "+e);               
            }
        %>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

您的查询是:

SELECT tbl1.name, tbl2.id_tbl2, tbl1.salary  
FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id_tbl1

select语句中只有3个字段 但是你正在尝试阅读不存在的第4个字段。

out.write(rs.getString(1));

out.write(rs.getString(2));
out.write("</br>");

out.write(rs.getString(3));
out.write("</br>");

out.write(rs.getString(4)); // this will result a runtime exception
out.write("</br>");

删除第4个,即getString(4)语句,它应该正常工作。