Zum Inhalt springen

MySQL und Servlet


byte

Empfohlene Beiträge

Ok ich hoffe ich kann mein Problem halbwegs gut beschreiben =)

Ich habe ein Servlet das auf eine MySQL Datenbank zugreifen soll, da aber für die Datenbank irgendwie keine Treiber in dem JDK sind, habe ich mir zugehörige von der www.mysql.de Seite geladen.

Jetzt meine Frage. Wie verwurschtel ich vernünftig den Treiber das mein Servlet den dann auch findet ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Welcher Servlet Container?

Tomcat?

Ab Tomcat 4.1.x gibt es einen eigenen ConnectionPool, den du benutzen kannst.

Die Installation ist unter : http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html beschrieben.

Ansonsten kannst du auch eine einfache jndi DataSource definieren. Ein Beispiel dazu müßte auskommentiert in der Datei server.xml stehen.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Emrep

Wenn du den ODBC-Treiber für MySQL installierst, kannst du eine ODBC-Datenquelle für deine Datenbank erzeugen. Die kannst du auch vom Tomcat aus anzapfen(JDBC-ODBC-Bridge).

Das ist wohl das einfachste.

Kein Wunder das da viele denken, Java wäre langsam. :rolleyes:

Also das ganze noch mal ohne Connection Pool.

Du musst das ausführen, was unter http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html Im Abschnitt "JDBC Data Sources" steht.

Du kannst alles übernehmen musst aber anstatt:

org.hsql.jdbcDriver

org.gjt.mm.mysql.Driver

schreiben und anstatt

jdbc:HypersonicSQL:database

jdbc:mysql://localhost/database

Wobei database die Datenbank ist die du unter mysql angelegt hast.

Außerdem musst du natürlich noch username und passwort anpassen.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Emrep

Das liegt wohl aber nicht am Datenbanktreiber. ;)

Emrep

Bei deinem Vorschlag schon. ;)

Zitat:

"ODBC saugt tote Hamster durch Strohhalme. (Kristian Köhntopp "PHP und Mysql Guru"

in de.comp.lang.php)" (Zitat Ende)

Du willst eine Verbindung die du direkt herstellen kannt (JDBC - MySQL) über die extrem unperformante und nur auf Windows funktionierende Schnittstelle von Microsoft realisieren.

(JDBC - ODBC - MySQL)

Das ist so als wenn du dich in einen Hubschrauber setzt um schnell von Hamburg nach München zu kommen und diesen Hubschrauber dann mit einem Güterzug nach München transportierst. :D

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mit dem ODBC hat sich bei mir sowieso erledigt, da das ganze auf einem Linux Server laufen muss. Hab Jaraz zweiten Tip weiter verfolgt und es scheint soweit alles zu funktionieren. Vielen Dank nochmal an euch beide ;)

Bin halt neu in der Servletschiene und werde euch wohl noch mit einigen Fragen löchern :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aaaaarrrrrrrrrrrgh *Haare rauf*

Er scheint die Klasse immer noch nicht zu finden ...

Habe jetzt die mysql_uncomp.jar mit den Treibern in /common/lib/ reingetan und die Servlets in /common/classes/ des Tomcat Verzeichniss

und hier nochmal mein code:


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;

public class main extends HttpServlet {
private static final String CONTENT_TYPE = "text/html";
public Connection con;
/**Globale Variablen initialisieren*/
public void init(ServletConfig config) throws ServletException {
try {
Class.forName("org.gjt.mm.mysql.Driver"); // Treiberklasse laden
con = DriverManager.getConnection("jdbc:mysql://bennid.dns2go.com:3306/wisotzki?user=byte"); //Verbindung herstellen
}
catch(Exception e) { e.printStackTrace(); }
}
/**Die HTTP-Anforderung Get bearbeiten*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
String param = request.getParameter("param");
String[] nav = getNavigation();
for (int i = 0; nav.length >= i; i++) {
out.println(nav[i]);
}
}
/**Navigation aus der Datenbank holen*/
public String[] getNavigation() {
String[] result = null;
String sql = "select navigation_name from bd_navigation"; //Abfragestring für Query
ResultSet rs;
int i = 0;
try {
Statement statement = con.createStatement();
rs = statement.executeQuery(sql);
//Alle eintraege aus der DB holen und in Array schreiben
while (rs.next()) {
result[i] = rs.getObject("navigation_name").toString();
i++;
}
statement.close();
rs.close();
}
catch(SQLException sqle) {
sqle.printStackTrace();
}
return result;
}
/**Ressourcen bereinigen*/
public void destroy() {
try { con.close(); }
catch(SQLException sqle) { sqle.printStackTrace(); }
}
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Jaraz

Das ist schon ok so, alle libs in common/lib stehen allen Webanwendungen zur Verfügung. Die in WEB-INF/lib, nur der einen.

wer weiss ob der Treiber nicht ClassLoader-Probleme kriegt wenn er in /common/lib steht, lieber auf Nummer sicher gehen und ins eigene Verzeichnis packen..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab die Servlets jetzt im Webapps Verzeichniss, hat an der Situation nichts geändert. web.xml ? Hab keine Ahnung wozu die da ist ;) Hab aber eine in /conf gefunden. Ich glaube Ihr habts schon gemerkt aber nochmal: Ich bin echt noch frisch auf dem Gebiet ;) Hat noch jemand ne Idee was ich machen muss ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Juhu, jetzt klappt es endlich. Dazu muss ich aber auch sagen das ich echt doof wie 4 Schritt Feldweg bin. Das haette alles schon viel schneller funktioniert haett ich nicht aufgehoert nach dem x-ten mal die Exceptions zu lesen, die schon lange einen anderen Fehler angezeigt haben *DAU*. Nochmal Danke für euer aller Hilfe.

Die Servlets liegen jetzt übrigens doch wieder in /common/classes und die .jar in /common/lib und alles funktioniert bestens.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...