Я просто пытаюсь установить мое соединение на свой сервлет и вывести запрос.Соединение с базой данных не работает через Servlet
Я получил эту работу при запуске по отдельному проекту с использованием того же кода, но работал как приложение Java, а не как сервлет. Водитель также находится в правильном месте.
Ниже мой код на сервлете:
package myproject;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class jdbc
*/
@WebServlet("/jdbc")
public class jdbc extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public jdbc() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
public static Connection con;
protected static void main(String[] argv) {
try {
connectionQuery();
PreparedStatement statement = con.prepareStatement("SELECT * from Music_Categories");/*write query inside of prepared statement*/
ResultSet result = statement.executeQuery();
System.out.println("DataBase table accessed");
while (result.next()) {
String retrievedid = result.getString("name");
System.out.println(retrievedid);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage().toString());
}
}
protected static void connectionQuery() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/newschemam?useSSL=false", "root", "root");
System.out.println("Remote DB connection established");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("Remote server could not be connected");
} catch (NullPointerException e) {
e.printStackTrace();
System.out.println("Remote server could not be connected");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Remote db connection establishment error");
} catch (Exception e) {
e.printStackTrace();
System.out.println("False query");
}
}
}
Заранее спасибо за какие-либо указания!
Какое исключение бросает? – CrawlingKid
Вы можете посмотреть этот ответ (http://stackoverflow.com/questions/28264198/connect-to-mysql-databse-from-servlet/28266708#28266708) о том, как правильно использовать JDBC в среде веб-контейнера. Также я должен отметить, что объект соединения не является потокобезопасным и должен быть получен для каждого запроса - другими словами, он не должен быть статичным или у вас будут проблемы с параллелизмом. –