PostgreSQL Java Servlets mit Datenbankanbindung

Zel2491

Aktives Mitglied
Hi Leute ;-)

Ich darf für die Uni mal wieder Hausaufgaben programmieren und komme nicht weiter...

Wir sollen per HTML eine Eingabe des Benutzers ermöglichen ( er soll in unserer Datenbank einfach nach einem Liedtitel suchen )

Nach der Eingabe soll dann das Ergebnis auf einer HTML Seite ausgegeben werden.

Mein Code sieht bisher so aus:

Java:
private String sqlAbfrage;
	private PrintWriter out;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");

		out = response.getWriter();

		sqlAbfrage = request.getParameter("sqlAbfrage");

		out.write("<html> \n");
		out.print("<head>\n<title>Ausgabe</title>\n</head>\n");
		out.print("<body>\n");
		out.print("<h1>");
		sqlQuery(); // Hier liegt der Hase im Pfeffer
		out.print("</h1>\n");
		out.print("</body>\n</html>\n");
		out.close();

	}

	private void sqlQuery() {

		Connection con = null;
		String driver = "org.postgresql.Driver";
		String DB_SERVER = "localhost:5432";
		String DB_NAME = "Meine_DB";
		String password = "dbae";
		String user = "postgres";
		String url = "jdbc:postgresql://" + DB_SERVER + "/" + DB_NAME;
		ResultSet rs = null;

		String sqlMedium = "SELECT DISTINCT medium.medium_id AS ID, "
				+ "medium.medium_titel AS Titel, medium.medium_art AS Speichermedium, "
				+ "medium.preis AS Preis FROM medium WHERE medium.medium_titel = "
				+ "? ORDER BY medium.medium_titel;";

		try {

			Class.forName(driver);

			con = DriverManager.getConnection(url, user, password);

			PreparedStatement pstmt = con.prepareStatement(sqlMedium);

			pstmt.setString(1, sqlAbfrage);

			rs = pstmt.executeQuery();

			while (rs.next()) {
				System.out.println(rs.getString(1) + " " + rs.getString(2)
						+ " " + rs.getString(3) + " " + rs.getString(4));
			}

		} catch (ClassNotFoundException e) {
			System.out.println("Class not Found Error: " + e.getMessage());
		} catch (SQLException e) {
			System.out.println("SQL Error");
			e.getMessage();
		} finally {
			// Always close the database connection
			try {
				if (con != null)
					con.close();
			} catch (SQLException ignored) {

			}
		}

	}

Das Problem ist wohl, dass ich diese ganze Datenbankverbindung nicht mit in die doGet-Methode mit reinnehmen darf - wenn ich die extra kommentierte Zeile mit
Java:
sqlQuery()
rausnehme kompiliert er das Programm ohne Fehlermeldung (natürlich halt ohne vernünftige Ausgabe).

Lasse ich die Zeil drin, meckert er,
Java:
Class not Found Error: org.postgresql.Driver

Weiß jemand, wie ich das trotzdem irgendwie gebacken kriege?

Gruß Zel ;-)
 
Du hast höchstwahrscheinlich das jar für den JDBC-Driver von PostreSQL nicht im Klassenpfad. Dieses muss unter WEB-INF/lib liegen. Herunterladen kannst Du Dir es hier: Download

Und innerhalb der Methode sqlQuery reicht es sicher nicht, die Abfrageergebnisse per System.out.println auszugeben, aber das ist bisher wohl auch nur Debug-Code, nehme ich an?
 
Du hast höchstwahrscheinlich das jar für den JDBC-Driver von PostreSQL nicht im Klassenpfad. Dieses muss unter WEB-INF/lib liegen. Herunterladen kannst Du Dir es hier: Download

Und innerhalb der Methode sqlQuery reicht es sicher nicht, die Abfrageergebnisse per System.out.println auszugeben, aber das ist bisher wohl auch nur Debug-Code, nehme ich an?

Sorry, hab die wichtigste Info vergessen -.- Ich ****...

Was mich halt wundert ist, dass ich den Treiber richtig drin habe und es nicht funktioniert. In anderen Projekten, in denen ich mit dem Treiber gearbeitet habe, klappt es wunderbar. Nur irgendwie nicht im Zusammenhang mit der doGet()-Methode...

Und der syso ist bisher nur zu Debug-Zwecken, ich werd das später in nen String schreiben und den dann auf die HTML Seite schreiben - wenn das mal alles klappt^^ ;-)

File-Upload.net - Bildschirmfoto-2012-12-19-um-16.24.47.png
 
Hat sich erledigt - der postgresql Treiber musste im Tomcat/lib Ordner auch vorhanden sein - wusste ich nicht -.-'' Jetzt weiß ichs und es läuft. Trotzdem danke 😉
 

Zurück
Oben