2015-07-03 13 views
5

Próbuję wyświetlić tabelę użytkownika na tabeli na stronie JSP. Ale dane nie są wyświetlane po uruchomieniu strony JSP.Jak wyświetlić tabelę bazy danych na stronie JSP

Mam schemat mySQL o nazwie "eyetracker" i tabelę o nazwie "użytkownik". Dziękujemy za pomoc .. Jeśli to możliwe, chciałbym odzyskać danych MySQL za pomocą apletu i wyświetlić go na stronie JSP ...

<%@ page import="java.sql.ResultSet" %> 
<%@ page import="java.sql.Statement" %> 
<%@ page import="java.sql.Connection" %> 
<%@ page import="java.sql.DriverManager" %> 

<form method="post"> 

<table border="2"> 
    <tr> 
     <td>user ID</td> 
     <td>Birthday</td> 
     <td>Gender</td> 
     <td>First Name</td> 
     <td>Last Name</td> 
    </tr> 
    <% 
    try 
    { 
     Class.forName("com.mysql.jdbc.Driver"); 
     String url="jdbc:mysql://localhost:3306/eyetracker"; 
     String username="root"; 
     String password="root"; 
     String query="select * from eyetracker"; 
     Connection conn=DriverManager.getConnection(url, username, password); 
     Statement stmt=conn.createStatement(); 
     ResultSet rs=stmt.executeQuery(query); 
     while(rs.next()) 
     { 
    %> 
      <tr><td><%rs.getInt("userID"); %></td></tr> 
      <tr><td><%rs.getDate("dob"); %></td></tr> 
      <tr><td><%rs.getString("gender"); %></td></tr> 
      <tr><td><%rs.getString("firstName"); %></td></tr> 
      <tr><td><%rs.getString("lastName"); %></td></tr> 

    <% 
     } 
    %> 
    </table> 
    <% 
     rs.close(); 
     stmt.close(); 
     conn.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    %> 
</form>` 
+0

Czy sprawdziłeś czy 'ResultSet rs' ma jakieś wiersze? To znaczy, czy wchodzisz w pętlę 'while'? –

+0

Zmień zapytanie na 'wybierz * od użytkownika' i upewnij się, że umieściłeś mysql jar w' WEB-INF/lib'. – Naman

Odpowiedz

2

zaktualizować swój mały kod jak następujące,

%>

 <tr><td><%out.println(rs.getInt("userID")); %></td></tr> 
     <tr><td><%out.println(rs.getDate("dob")); %></td></tr> 
     <tr><td><%out.println(rs.getString("gender")); %></td></tr> 
     <tr><td><%out.println(rs.getString("firstName")); %></td></tr> 
     <tr><td><%out.println(rs.getString("lastName")); %></td></tr> 
 <tr><td><%=rs.getInt("userID"); %></td></tr> 
     <tr><td><%=rs.getDate("dob"); %></td></tr> 
     <tr><td><%=rs.getString("gender"); %></td></tr> 
     <tr><td><%=rs.getString("firstName"); %></td></tr> 
     <tr><td><%=rs.getString("lastName"); %></td></tr> 

<%

+0

Możesz chcieć dodać, dlaczego i co zmieniłeś. Ułatwi to to bardziej. – jAC

2

W JSP, jeśli chcesz dodać do dynamicznej zawartości HTML DOM, ty należy to zrobić:

<tr><td><%=rs.getInt("userID"); %></td></tr> 
<tr><td><%=rs.getDate("dob"); %></td></tr> 
<tr><td><%=rs.getString("gender"); %></td></tr> 
<tr><td><%=rs.getString("firstName"); %></td></tr> 
<tr><td><%=rs.getString("lastName"); %></td></tr> 

Zanotuj kod = w powyższym kodzie.

Tego brakuje w kodzie, dlatego kod wyodrębnia tylko wartości, ale nie wstawia ich do HTML DOM.

<%@ page import="java.sql.ResultSet" %> 
<%@ page import="java.sql.Statement" %> 
<%@ page import="java.sql.Connection" %> 
<%@ page import="java.sql.DriverManager" %> 

<form method="post"> 

<table border="2"> 
<tr> 
<td>user ID</td> 
<td>Birthday</td> 
<td>Gender</td> 
<td>First Name</td> 
<td>Last Name</td> 
</tr> 
<% 
try 
{ 
Class.forName("com.mysql.jdbc.Driver"); 
String url="jdbc:mysql://localhost:3306/eyetracker"; 
String username="root"; 
String password="root"; 
String query="select * from user"; 
Connection conn=DriverManager.getConnection(url, username, password); 
Statement stmt=conn.createStatement(); 
ResultSet rs=stmt.executeQuery(query); 
while(rs.next()) 
{ 

%> 
<tr><td><%=rs.getInt("userID") %></td></tr> 
<tr><td><%=rs.getDate("dob") %></td></tr> 
<tr><td><%=rs.getString("gender") %></td></tr> 
<tr><td><%=rs.getString("firstName") %></td></tr> 
<tr><td><%=rs.getString("lastName") %></td></tr> 

<% 

} 
%> 
</table> 
<% 
rs.close(); 
stmt.close(); 
conn.close(); 
} 
catch(Exception e) 
{ 
e.printStackTrace(); 
} 
%> 
</form> 
0

Znacznik wyrażeń będzie używany do wyświetlania wartości na stronie JSP. Znacznik wyrażeń konwertowany na wyrażenie Java. Używasz jednak znaczników Scriptlet, które pozwalają osadzić dowolny prawidłowy kod źródłowy Java na stronach serwera JSP.

Wynik pochodzi z bazy danych, a następnie zostanie wyświetlony prawidłowo.

<tr><td><%=rs.getInt("userID"); %></td></tr> 
<tr><td><%=rs.getDate("dob"); %></td></tr> 
<tr><td><%=rs.getString("gender"); %></td></tr> 
<tr><td><%=rs.getString("firstName"); %></td></tr> 
<tr><td><%=rs.getString("lastName"); %></td></tr> 
0

jeśli nie masz sterownika JDBC w ścieżce klasy błędu idzie do wyjścia serwera aplikacji, ponieważ masz linię e.printStackTrace();. spróbuj zmienić:

catch(Exception e) { 
    e.printStackTrace(); 
} 

Z:

catch(Exception e) { 
    e.printStackTrace(); 
    out.println("<h1> error: "+ e.getMessage()+"</h1>"); 
} 

aby sprawdzić, czy masz jakiś problem z JDBC kierowcy

0

Nie tylko tag Expression przekształcić w Javie, ale plik Pełna JSP przekształcić w Servlet, więc używać znaczników jedno wyrażenie lub skrypty.

0

Świetne rozwiązanie, próbował to samo na moim stole, ale

<tr><td><%=rs.getString("column1") %></td 
<td><%=rs.getInt("column2") %></td></tr> 

drukuje tylko pierwszą wartość z pierwszej kolumny, a następnie pętla zatrzyma. Działa idealnie tylko dla kolumn typu varchar, ale nie z kolumnami typu int.

Powiązane problemy