Невозможно получить данные из базы данных 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 остается нулевым до конца.