【发布时间】:2016-02-18 17:34:47
【问题描述】:
我只是想在我的 servlet 上建立连接并输出查询。
当我使用相同的代码在单独的项目上运行但作为 Java 应用程序而不是作为 servlet 运行时,我得到了这个工作。司机也在正确的地方。
下面是我在 servlet 上的代码:
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");
}
}
}
提前感谢您的指导!
【问题讨论】:
-
抛出了什么异常?
-
您可以查看该答案 (stackoverflow.com/questions/28264198/…),了解如何在 Web 容器环境中正确使用 JDBC。另外我必须注意,连接对象不是线程安全的,必须为每个请求检索 - 换句话说,它不能是静态的,否则您将遇到并发问题。