# Datenbankausgabe .jsp per SQLite



## mapof (18. Dez 2014)

Hey zusammen,

ich bin gerade dabei in einem Testprojekt eine Datenbank auszulesen und diese im Browser über localhost:8080 auszugeben: Dort sehe ich jedoch nur eine weiße Seite.

*showDB.jsp*

```
<!DOCTYPE html>

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@page import="com.poketrade.dialect.*" %>
<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
</head>
<body>

	<form action="showMessage.jsp">
		<%
			int pokemon_species_id, a;
			String name;
			
			try {
				Class.forName("org.sqlite.JDBC");
				Connection conn = DriverManager.getConnection("jdbc:sqlite:/pokemon.sqlite");
				Statement stmt = conn.createStatement();
				String sql = "pokemon_species_id, name FROM pokemon_species_names WHERE local_language_id = 6";
				ResultSet res = stmt.executeQuery(sql);
				out.println("<br><table border='2");
				out.println("<th>ID</th>");
				out.println("<th>Name</th>");
				
				while (res.next()) {
					out.println("<tr><td>");
					a = res.getRow();
					out.println(a);
					out.println("</td><td>");
					pokemon_species_id  = res.getInt(1);
					out.println(pokemon_species_id);
					out.println("</td><td>");
					name = res.getString(2);
					out.println(name);
				}
			}
			catch(Exception e) {
				System.out.println(e);
			}
		%>

	</form>


</body>
</html>
```

*index.jsp*

```
<!DOCTYPE html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
</head>
<body>
	<c:url value="/showDB.jsp" var="database" />
	<a href="${database}"></a>
</body>
</html>
```


----------



## Joose (18. Dez 2014)

Dein SQL Statement ist nicht valide! Daher wirst du auch keine Ausgabe bekommen.


----------



## mapof (18. Dez 2014)

Joose hat gesagt.:


> Dein SQL Statement ist nicht valide! Daher wirst du auch keine Ausgabe bekommen.



Wie behebe ich das?


----------



## Joose (18. Dez 2014)

Indem du ein SQL Statement schreibst dessen Syntax korrekt ist!

Kopiere dir dein SQL Statement und versuche es in einem SQL Browser auszuführen (für SQLite gibt es hier das "sqllitestudio").
Dann solltest du dir ein SQL Grundlagenbuch hernehmen und kontrollieren wie ein SQL Statement auszusehen hat.


----------



## mapof (18. Dez 2014)

Hatte den SELECT vergessen zu schreiben, hat aber nichts geändert: Ausgegeben wird im Browser nichts. Im SQLite Browser funktioniert der Befehl jedoch.


----------



## dzim (18. Dez 2014)

Indem du ein "Select" vorne anfügst --> SELECT xyz FROM abc WHERE xyz=?


----------



## Joose (18. Dez 2014)

mapof hat gesagt.:


> .... hat aber nichts geändert: Ausgegeben wird im Browser nichts.



Bitte schau dir deinen Code nochmals an!
Einerseits weiß ich nicht was *out.println(....)* sein soll? Oder hast du bei all diesen Zeilen das *System.* davor vergessen?

Ansonsten erzeugst du nicht einmal eine valide HTML Struktur!



mapof hat gesagt.:


> ```
> out.println("<br><table border='2");
> ```



Das Tag wird nicht geschlossen, und System fehlt beim Java Code!



mapof hat gesagt.:


> ```
> out.println("<th>ID</th>");
> ```



Die Header selbst müssen auch in einer Row sein!

Des Weiteren fehlen noch einige schließende Tags.


----------



## tommysenf (18. Dez 2014)

out bezieht sich in einer JSP auf den Outputstream der Servlet Response und ist eine implizit vorhandene Variable. Also völlig korrekt.
Da das HTML Element Table nicht korrekt geschlossen wird, würde ich mir mal den generierten HTML Quelltext anschauen, ob die Daten darin enthalten sind...


----------

