Zugriff auf MySQL mit Java-Servlet?
Die Lösung:
Fügte ich diesen code
Class.forName("com.mysql.jdbc.Driver");
brfore
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
Danke für alle Antworten meine Frage
====================
Ich habe ein problem, ich versuche zum einfügen von Daten in mysql-db mit Hilfe von Servlets, , aber ich konnte ' Y Zugriff auf die MySQL -
- Datenbank name: test
- Tabelle-name: test
- Ich bereits Hinzugefügt jdbc-connector für das Projekt Bibliothek
- Ich bin mit dem JDK 1.7, NetBeans 7.3, MySQL 5.6, Apache Tomcat 7.0, Connector/J 5.1.24
1 - dies ist die "form action" in sign_up.jsp-Seite:
<form action="RegisterUser" method="post">
<td><input type="submit" value="Submit"></td>
</form>
2 - dies ist RegisterUser.java servlet:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
@WebServlet(urlPatterns = {"/RegisterUser"})
public class RegisterUser extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");
Statement s = (Statement) con.createStatement();
String name = "Hassan3";
int phone = 123456;
String insert = "INSERT INTO test VALUES ('\" + name + \"', \" + phone + \")";
s.executeUpdate(insert);
s.close();
con.close();
}catch(Exception e){
throw new SecurityException("Class not found " + e.toString());
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException ex) {
Logger.getLogger(RegisterUser.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException ex) {
Logger.getLogger(RegisterUser.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
3 - die Ausnahme Ergebnis:
HTTP Status 500 - Class not found java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test
type Exception report
message Class not found java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.SecurityException: Class not found java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test
RegisterUser.processRequest(RegisterUser.java:66)
RegisterUser.doPost(RegisterUser.java:173)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.39 logs.
4 - Aber wenn ich den gleichen code, aber in der java-Datei "ohne servlet-oder web-app", dass es richtig arbeitet:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Test {
public static void main(String[] args){
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");
Statement s = (Statement) con.createStatement();
String name = "Hassan4";
int phone = 8985895;
String insert = "INSERT INTO test VALUES ('" + name + "', " + phone + ")";
s.executeUpdate(insert);
s.close();
con.close();
System.out.println("done");
}catch(Exception e){
throw new SecurityException("Class not found " + e.toString());
}
}
}
also was ist das problem mit servlet? Warum funktioniert der code auch mit java-app. aber es funktioniert nicht mit web-app.?
- Möglich, Duplikat der Der berüchtigte java.sql.SQLException: No suitable driver found
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie immer
Class not found java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test
Bedeutet es, Wenn Sie laufen Sie von der Web-Anwendung, JRE nicht finden konnten, eine Klasse im Klassenpfad.
Wenn dieser code funktioniert in Ihrem Standalone-es bedeutet, dass Sie brauchen, um eine JAR-Datei irgendwo mit c
om.mysql.jdbc.Driver
- Klasse (so genannte JDBC - Treiber). Diese JAR-Datei muss sichtbar in Tomcat. Also, ich würde vorschlagen, Platzierungmysql-jdbc.jar
an einem physischen Ort zu/WEB-INF/lib
Verzeichnis des Projekts.Alternativ können Sie Drittanbieter-Bibliotheken wie JDBC-Treiber hier mit
von Ihrem
NetBeans
IDEDann Neustart von Tomcat arbeiten.
Sekunde, die Sie nicht brauchen,
in Ihrem Servlet.
David hat Recht und ich möchte hinzufügen, Sie können auch installieren Sie die Treiber durch einfügen der jar-Datei in den Installationsordner von java.
Nun ich nicht wie mysql sehr viel und stets mit Mssql mit einem windows server 2008. Dies ist der code den ich dafür verwende, ich könnte die Antwort sein, da mysql Verbindung funktioniert so ziemlich das gleiche wie sql.
Zunächst sollten Sie setzen, dass in einer Persistenz-Schicht.
1) stellen Sie Sicher, dass Sie Ihre JDBC-Treiber vorhanden ist. Kopier es in dein classpath, z.B. /WEB-INF/lib-Verzeichnis. Link: MySQL-JDBC-Treiber-Download-Seite
2) Überprüfen Sie Ihre Verbindungszeichenfolge:
jdbc:mysql://<server>:<port>/<database>
, sieht aus wie der Anschluss fehlt. Versuchenjdbc:mysql://127.0.0.1:3306/test