我在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>
答案 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)
语句,它应该正常工作。