Подключение к MySQL из Servlet не работает [дубликат]

Я делаю небольшое приложение, чтобы опубликовать свои заметки с моих классов на сервере. Я использую JDBC и MySQL для стороны базы данных и JSP / Servlets для приложения.

Я написал автономное приложение Java, которое очень похоже на мой код сервлета, и он отлично работал; мой код сервлета не работает нормально.

Определения атрибутов:

    final String STATEMENT = "INSERT INTO FILE(upload_time, filename, class, data) VALUES(CURTIME(), '" + request.getParameter("file") + "', '" + request.getParameter("cls") + "', '" + request.getParameter("comm") + "')";
    final String STATEMENT2 = "INSERT INTO FILE(upload_time, filename, data) VALUES(CURTIME(), 'booga33.txt', 'ooga booga dooga22222222222222!')";

    try {
        con = DriverManager.getConnection(DB_URL, USER, PASS);
        s = con.createStatement();
        s.executeUpdate(STATEMENT2);
    }
    catch(SQLException i)
    {
        PrintWriter w = response.getWriter();
        w.println(i.getErrorCode());
    }
    catch(Exception e)
    {
        PrintWriter w = response.getWriter();
        w.println("error occured.");
    }

Метод doPost:

SQLException

Это бросает SQLExceptionи дает мне код ошибки 0, который является недопустимым логином. Имя пользователя / пароль верны, но я считаю, что URL-адрес неверен (хотя это именно тот адрес базы данных, который я использовал в своем java-приложении, а /DATASETтакже правильное имя для моей схемы.

В отдельном примечании я знаю, что есть проблемы с моей реализацией, если они используются многими пользователями; Я просто хочу заставить его работать с одним пользователем, а потом я буду беспокоиться о многих.

Редактирование: я использую tomcat в качестве веб-сервера для своих страниц JSP / Servlet, у меня также есть соединитель mysql, размещенный в разделе «Связанные библиотеки» моего проекта (Eclipse).

Любая помощь на этом очень ценится !!!!

РЕДАКТИРОВАТЬ:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/DATASET
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DoSubmit.doPost(DoSubmit.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

РЕШЕНИЕ: Разместите JAR MySQL Connector в WEB-INF->libслучае использования eclipse IDE. Кроме того, Class.forName(driver);необходимо установить соединение.

java,mysql,tomcat,servlets,jdbc,

1

Ответов: 3


4 принят

Не найдено подходящих драйверов для jdbc: mysql: // localhost: 3306 / DATASET

Сначала сделайте, чтобы разместить JDBC-коннектор в своем классе, вы можете скачать его здесь

Если вы используете maven, используйте это:

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.13</version>
</dependency>

Во-вторых, убедитесь, что ваша информация о подключении верна:

public class CreateConnection {
    String driver = "com.mysql.jdbc.Driver";
    String DB_username = "root";
    String DB_password = "pass";
    String DB_URL = "jdbc:mysql://localhost:3306/DATABASE";

    public Connection getConnection() {
        try {
            Class.forName(driver);
            java.sql.Connection con = DriverManager.getConnection(DB_URL, DB_username, DB_password);
            return con;

        } catch (ClassNotFoundException | SQLException e) {
            System.out.println("Exception " + e);
            return null;
        }
    }
}

Я предлагаю вместо этого использовать подготовленное заявление, это может быть безопасным способом, вы можете узнать об этом здесь. Подготовленное заявление

РЕДАКТИРОВАТЬ

Как @Gimby сказал: уверен, что ваша банка находится в нужном месте, поэтому, если вы используете Eclipse, используйте Как поместить файл в classpath в eclipse? если Netbeans использует Как настроить classpath в Netbeans?


0
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;


public class Test {
    static final String DB_URL = "jdbc:mysql://localhost:3306/DATASET";
    static final String USER = "user";
    static final String PASS = "pass";
    static Connection con = null;
    static Statement s = null;
    public static void main(String[]args){
        final String query = "INSERT INTO FILE(upload_time, filename, data) VALUES(CURTIME(), 'booga33.txt', 'ooga booga dooga22222222222222!')";

        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(DB_URL, USER, PASS);
            s = con.createStatement();
            //s.executeUpdate(query);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }

}

0
//Add MySQL jdbc jar file into project lib.

public static Connection con; 
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Database name", userid,password); 
Java, MySQL, кот, сервлеты, JDBC,
Похожие вопросы