Невозможно получить данные из базы данных MySQL - проверено на отладчике - myConn == null и не изменится

Я работаю над каким-то веб-проектом. У меня есть следующая проблема - я не могу получить данные из базы данных MySQL. Я перепробовал все. Вот TestServlet, который предполагает отображать данные в виде простого текста. Я использую его только для проверки соединения с БД MySQL. Я сделал пошаговую отладку, и вот что происходит, myConn, myStmt и myRs имеют значения null, затем я делаю точку останова на myConn = dataSource.getConnection - однако в отладчике myConn по-прежнему равняется нулю, тогда как оставшаяся часть try {} опущена (я поставьте там точки останова) и он перейдет к окончанию {} и закроет соединение. Если кому-то интересно, могу выслать полный проект. Это TestServlet:

package com.pbs.web.jdbc;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.Resource;
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 javax.sql.DataSource;

@WebServlet(name = "TestServlet", urlPatterns = {"/TestServlet"})
public class TestServlet extends HttpServlet {

@Resource(name="sql2226123")
private DataSource dataSource;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse        response)
        throws ServletException, IOException {

    // Step 1: Set up printwriter
    PrintWriter out = response.getWriter();
    response.setContentType("text/plain");

    // Step 2: Get connection to the database
    Connection myConn = null;
    Statement myStmt = null;
    ResultSet myRs = null;

    try {
        myConn = dataSource.getConnection(); // getting connection

        // Step 3: Create SQL statements
        String sql = "SELECT * FROM `rezerwacje_miejsc`"; // execute sql query
        myStmt = myConn.createStatement();

        // Step 4: Execute SQL query
        myRs = myStmt.executeQuery(sql);

        // Step 5: Process the result set
        while (myRs.next()) {
            String userName = myRs.getString("IMIE_NAZWISKO");
            out.println(userName);
        }
    }
    catch (SQLException exc) {
    }
    finally {
        // close JDBC objects 
        close(myConn, myStmt, myRs);
    }
}

private void close(Connection myConn, Statement myStmt, ResultSet myRs) {
    try {
        if (myRs != null) {
                myRs.close();
        }

        if (myStmt != null) {
                myStmt.close();
        }

        if (myConn != null) {
                myConn.close();   // doesn't really close it ... just puts back in connection pool
        }
    }
    catch (Exception exc) {
        exc.printStackTrace();
    }
}
}

Вот мой context.xml (имя пользователя и пароль MySQL DB здесь ненастоящие - в моем проекте они на 100% правильные)

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/PBS">
    <Resource name="sql2226123" 
        auth="Container" type="javax.sql.DataSource"
        maxActive="20" maxIdle="5" maxWait="10000"
        username="userName" password="password" 
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://sql2.freemysqlhosting.net:3306/sql2226123"/>
</Context>

и web.xml

<web-app version="3.1" id="WebApp_ID" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<display-name>parking-space-booking-system</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

У меня есть больше методов, но ни один из них не дает никаких результатов, и даже этот самый простой тестовый сервлет имеет одинаковую проблему, поэтому для всех них существует одинаковая проблема. Я трижды проверил мою базу данных MySQL, и она активна, и все данные остаются прежними. Моя таблица все еще присутствует, и я могу добавлять / удалять записи с помощью SQL-запросов. Я потратил много часов, пытаясь решить проблему. Ничего не помогает Я попробовал Tomcat и Glassfish, также я сделал Maven-версию проекта для добавления API, и есть та же проблема. Самое странное, что вчера это работало, я не знаю, пропустил ли я что-то при попытке добавить API, однако я сделал несколько резервных копий (на разных этапах проекта и на каждом из них он работал - включая testsevlet), и каждый из них имеет то же самое применение сейчас... Помоги мне, Оби-Ван Кеноби, ты моя единственная надежда. Изменить: После отладки шаг за шагом, является ли это метод из модели или просто TestServlet myConn, myStmt, myRs все установлены в ноль - тогда это приходит к: yConn = dataSource.getConnection(); и переходит к окончательному {} получению всего кода. myConn остается нулевым до конца.

0 ответов

Другие вопросы по тегам