在撰寫jsp檔案連接資料庫是時,一直產生空指標例外,無法連接資料庫,本人為初學者,在網上找了很久一直沒有解決,跪求大神指導
jsp檔案內容如下:
<%
String url = "jdbc:mysql://localhost/ch10";
String userName = "root";
String password = "123456";
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException e) {
out.println("加載驅動器類時出現例外");
}try {
conn = null;
conn = DriverManager.getConnection(url, userName, password);
} catch(SQLException e) {
out.println("連接資料庫的程序中出現SQL例外");
} if (conn==null)
out.println("連接資料庫失敗");
else
out.println("連接資料庫成功");
try {
conn.close();
} catch (SQLException e) {
out.println("關閉資料庫連接時出現SQL例外");
}
%>
錯誤提示:
java.lang.NullPointerException
at org.apache.jsp.testconnection_jsp._jspService(testconnection_jsp.java:92)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: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:472)
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:1008)
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)
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.lang.NullPointerException
org.apache.jsp.testconnection_jsp._jspService(testconnection_jsp.java:92)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
uj5u.com熱心網友回復:
我是來學習的!很顯然你的url里面沒寫埠號;
String url = "jdbc:mysql://localhost/ch10";
MySQL埠號是3306;
String url = "jdbc:mysql://localhost:3306/ch10";
uj5u.com熱心網友回復:
String url = "jdbc:mysql://localhost/ch10";String userName = "root";
String password = "123456";
你先按照你這個鏈接字串,直接用mysql客戶端登陸到mysql試試,看看能不能登陸上去?
uj5u.com熱心網友回復:
加上埠號依舊無法運行,還是空指標例外uj5u.com熱心網友回復:
可以登上的,用戶名密碼都沒問題uj5u.com熱心網友回復:
加了埠,還出空指標問題,出現空指標問題,一般是null呼叫了方法導致的,也就是物件為null,從已寫的程式來看,似乎沒有null呼叫的情況,但是無論是在.jsp或者.java檔案寫JDBC都需要匯入相關的包Java中 import "java.sql.*
而jsp中前面幾行需要添加指令
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%>
所以我的猜測是少了<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%>,
還有一個問題,本來例外資訊,應該列印出來,不能省略或者去掉,方便排錯的
就是catch(SQLException e) {
out.println("連接資料庫的程序中出現SQL例外");
}等捕捉例外的地方
{}中添加printStackTrace();
也就是
catch(SQLException e) {
e.printStackTrace();
out.println("連接資料庫的程序中出現SQL例外");
}
如果沒有這個printStackTrace();,那怎么知道這個Java連接資料庫程式,捕捉到例外后,Java例外的資訊?!
uj5u.com熱心網友回復:
遇到同樣的問題 , 怎么解決uj5u.com熱心網友回復:
MySQL的安裝有問題,重裝MySQL后解決了,你的是什么問題?
uj5u.com熱心網友回復:
可能是你的驅動下載錯了,我的開始也是這樣轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/73680.html
標籤:MySQL
上一篇:資料庫技術及應用課后答案
下一篇:Oracle遷移到MySQL,其中有段SQL陳述句需要轉換成MySQL的語法,絞盡腦汁幾天了,寫不出來,求大神指教!
