Servlet - databaseconnection
Hejsajeg sidder og arbjeder på en servlet der skal hente informationer fra en MySQL-DB. Når sender en variabel til Servletten med GET og skal så bruge den variabel i SQL-forespørgsel.
Her er min kode til Servletten:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class ReadDBServlet extends HttpServlet {
final static String usr = "rlh1";
final static String url = "jdbc:mysql://mysql.it-c.dk/" + usr;
final static String pwd = "XXX";
Connection db; // The connection to the database
Statement st; // A statement to run queries with
// Open connection to the database when the servlet object is created
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
Class.forName("org.gjt.mm.mysql.Driver"); //loading driver
db = DriverManager.getConnection(url, usr, pwd); // establish connection
st = db.createStatement(); //create statement object
} catch (ClassNotFoundException e) {
System.out.println("Cannot find the mysql driver");
} catch (SQLException e) {
System.out.println("Database error: " + e);
}
}
// Close the connection to the database when the servlet object is destroyed
public void destroy() {
try {
st.close();
db.close();
} catch (SQLException e) {
System.out.println("Database error: " + e);
}
}
// Read from the database
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String[] number1params = req.getParameterValues("kategori");
int number1 = Integer.parseInt(number1params[0]);
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
try {
String query = "SELECT * FROM Film";
st.execute(query);
out.println("<html><body>");
out.println("<h2>Filmtitel</h2><br/>");
out.println("<ul>");
ResultSet rs = st.getResultSet();
while (rs.next()) {
String titel = rs.getString("Titel");
out.println("<li>" + titel + "</li>");
}
out.println("</ul></body></html>");
} catch (SQLException e) {
System.out.println("Database error: " + e);
}
}
}
Men når jeg får følgende fejl når servletten kaldes:
java.lang.NullPointerException
at ReadDBServlet.doGet(ReadDBServlet.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:534)
Jeg har testet at DB fungerer så det er ikke problemet!
På forhånd tak!
Rasmus
