hallo,
seit 2 tagen plage ich mich mit einer mysql verbindung unter java herum. jetzt konnte ich endlich den fehler lokalisieren..den mysql connector habe ich richtig eingebunden, doch wird er bei mir im Sun Java Studio Enterprise 8 nur geladen und gefunden, wenn ich das java SQL Paket nicht importiere..
woran liegt das?
hier der code..
bei Class.forName() wird mir halt eine ClassNotFoundException ausgegeben, aber der treiber bzw. die JAR liegen im CLASSPATH dir und manuell auch nochmal per hand als lib im projekt eingebunden (sehe das paket auch im projektmenu)..
nun ist mir aufgefallen, dass der treiber auch mal geladen werden kann, wenn ich bestimmte pakete (z.b. java.sql.*) nicht importiere! keine ahnung wieso, dann gehen aber halt die sql klassen nicht..
dann ist mir aufgefallen, dass das problem nur beim servlet besteht. erstelle ich eine normale java app, kann ich den treiber laden, einbinden und sql abfragen ausgeben.
FUNKTIONIERT
FUNKTIONIERT NICHT
auch dieses beispiel geht nicht, es wird eine exception ausgeworden: java.sql.SQLException: No suitable driver
der mysql-connector-jar ist bestandteil deS JDK, sehe die klasse in den libarys die geladen werden..
seit 2 tagen plage ich mich mit einer mysql verbindung unter java herum. jetzt konnte ich endlich den fehler lokalisieren..den mysql connector habe ich richtig eingebunden, doch wird er bei mir im Sun Java Studio Enterprise 8 nur geladen und gefunden, wenn ich das java SQL Paket nicht importiere..
woran liegt das?
hier der code..
Code:
package webapp;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
....
try
{
// The newInstance() call is a work around for some
// broken Java implementations
Class.forName("com.mysql.jdbc.Driver");
Connection dbcon = DriverManager.getConnection("mysql://localhost/test?" +
"user=monty&password=greatsqldb");
...
bei Class.forName() wird mir halt eine ClassNotFoundException ausgegeben, aber der treiber bzw. die JAR liegen im CLASSPATH dir und manuell auch nochmal per hand als lib im projekt eingebunden (sehe das paket auch im projektmenu)..
nun ist mir aufgefallen, dass der treiber auch mal geladen werden kann, wenn ich bestimmte pakete (z.b. java.sql.*) nicht importiere! keine ahnung wieso, dann gehen aber halt die sql klassen nicht..
dann ist mir aufgefallen, dass das problem nur beim servlet besteht. erstelle ich eine normale java app, kann ich den treiber laden, einbinden und sql abfragen ausgeben.
FUNKTIONIERT
Code:
package javaapplication23;
import java.sql.*;
/**
*
* @author U433661
*/
public class Main {
static public java.sql.Connection con1=null;
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
final String hostname = "localhost";
final String port = "3306";
final String dbname = "ressourcenplaner";
final String name = "root";
final String pw = "";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch (Exception e) {
}
try {
String url = "jdbc:mysql://" + hostname + ":" + port + "/" + dbname;
Connection dbcon = DriverManager.getConnection(url, name, pw);
Statement statement = dbcon.createStatement();
String query = "SELECT * FROM rp_projekte ORDER BY projekt_titel";
// Perform the query
ResultSet rs = statement.executeQuery(query);
// Iterate through each row of rs
while (rs.next())
{
String m_projekt_titel = rs.getString("projekt_titel");
String m_projekt_stunden = rs.getString("projekt_stunden");
System.out.println(m_projekt_titel + " " + m_projekt_stunden);
}
}
catch (SQLException sqle) {
System.out.println(sqle);
}
}
}
FUNKTIONIERT NICHT
Code:
/*
* mySQLServlet.java
*
* Created on 23. April 2007, 14:01
*/
import java.io.*;
import java.net.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
*
* @author U433661
* @version
*/
public class mySQLServlet extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
/* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet mySQLServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet mySQLServlet at " + request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
*/
doSomeMysql();
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
public void doSomeMysql() {
// TODO code application logic here
final String hostname = "localhost";
final String port = "3306";
final String dbname = "ressourcenplaner";
final String name = "root";
final String pw = "";
try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance(); // egal ob mit/ohne newInstance() oder com.mysql.jdbc.Driver
}
catch (Exception e) {
}
try {
String url = "jdbc:mysql://" + hostname + ":" + port + "/" + dbname;
Connection dbcon = DriverManager.getConnection(url, name, pw);
Statement statement = dbcon.createStatement();
String query = "SELECT * FROM rp_projekte ORDER BY projekt_titel";
// Perform the query
ResultSet rs = statement.executeQuery(query);
// Iterate through each row of rs
while (rs.next())
{
String m_projekt_titel = rs.getString("projekt_titel");
String m_projekt_stunden = rs.getString("projekt_stunden");
System.out.println(m_projekt_titel + " " + m_projekt_stunden);
}
}
catch (SQLException sqle) {
System.out.println(sqle);
}
}
}
der mysql-connector-jar ist bestandteil deS JDK, sehe die klasse in den libarys die geladen werden..