【发布时间】:2014-05-25 01:54:39
【问题描述】:
我正在尝试从一个 serverlet 连接到一个 mySql 数据库,但是当我尝试这样做时,我得到一个空指针异常:
连接:
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost/bmistore", "bmiuser",
"yMMECajG99yE4YWE");
} catch (Exception e) {
System.out.println("No DB found");
connection = null;
}
}
用法:
public List<String> getAllNames() {
System.out.println("Test");
List<String> names = new ArrayList<>();
try {
Statement statement = connection.createStatement();
ResultSet results = statement
.executeQuery("SELECT name FROM patients");
System.out.println("TEST 2");
//Add all names to array
while (results.next()) {
String name = results.getString("name");
names.add(name);
}
} catch (SQLException e) {
System.out.println("getAllNames: " + e.getMessage());
}
return names;
我在名为 RemoteSystemsTempFiles 的文件夹中有一个 .sql 文件。我不确定为什么会出现,因为我使用的是讲师提供的示例。感谢您的时间。
异常堆栈跟踪:
May 25, 2014 11:38:09 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Main] in context with path [/BMISystem] threw exception
java.lang.NullPointerException
at PatientManager.getAllNames(PatientManager.java:42)
at Main.doGet(Main.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.jav a:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
如果您发布完整的异常堆栈跟踪会很有帮助
-
在 getAllNames() 方法本身中添加连接代码并检查是否工作..
-
再观察一下,还要参数化 Arraylist。
List<String> names = new ArrayList<String>(); -
什么是 PatientManager.getAllNames(PatientManager.java:42) 行?
-
也放PatientManager类的代码
标签: java mysql jakarta-ee