问题描述
- jsp连接数据库一直报错,求帮忙看下,谢谢
-
<%@page language=""java"" import=""java.util.*"" pageEncoding=""utf-8""%><%@page import=""java.sql.*""%><html><body><% String tablename=request.getParameter(""tablename""); if(tablename==null) tablename=""""; byte[] b=tablename.getBytes(""ISO-8859-1""); tablename=new String(b); out.println(tablename); final String DRIVER = ""org.gjt.mm.mysql.Driver""; final String DURL = ""jdbc:mysql://localhost:3306/application""; final String DUSER = ""root""; final String DPASS = ""594daidai""; Connection conn = null; try{ Class.forName(DRIVER); }catch(ClassNotFoundException e){ e.printStackTrace(); } try{ conn = DriverManager.getConnection(DURLDUSERDPASS); }catch(SQLException e){ e.printStackTrace(); } out.println(conn); try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); }%></body></html> HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: An exception occurred processing JSP page /bookMinage/docreatetable.jsp at line 2825: } 26: out.println(conn); 27: try{28: conn.close(); 29: }catch(SQLException e){30: e.printStackTrace();31: }Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)root causejava.lang.NullPointerException org.apache.jsp.bookMinage.docreatetable_jsp._jspService(docreatetable_jsp.java:82) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
解决方案
conn.close(); 这句报空指针, 说明你之前的连接没有获取到,肯定是上面的语句抛了异常
建议你按照如下代码调试,就可以找到问题所在了,有可能是没有找到驱动的JAR有可能用户名密码不对,具体看异常打印吧。
Connection conn = null; try{ Class.forName(DRIVER); conn = DriverManager.getConnection(DURLDUSERDPASS); out.println(conn); conn.close(); }catch(ClassNotFoundException e){ out.println(e); }catch(SQLException e){ out.println(e); }
解决方案二:
1: application这个数据库名,是不是对的就是存不存在这个数据库
final String DURL = ""jdbc:mysql://localhost:3306/application"";
2:把连接数据库的代码,写一个类中,不要这样放在jsp中,这不符合mvc的模式
3:参考以下的连接方式肯定可以,只是简单的开了个头
驱动程序名
String driver = ""com.mysql.jdbc.Driver"";
// URL指向要访问的数据库名scutcs
String url = ""jdbc:mysql://127.0.0.1:3306/scutcs"";
// MySQL配置时的用户名
String user = ""root"";
// Java连接MySQL配置时的密码
String password = ""root"";
try {
// 加载驱动程序
Class.forName(driver);
// 连续数据库
Connection conn = DriverManager.getConnection(url user password);
if(!conn.isClosed())
System.out.println(""Succeeded connecting to the Database!"");
// statement用来执行SQL语句
Statement statement = conn.createStatement();
// 要执行的SQL语句
String sql = ""select * from student"";
解决方案三:
目测是你的数据库连接有问题,数据库连接就没有连上,然后你又尝试关闭。
解决方案四:
26行打印con有结果吗?如果是null的话,后面con.close就会有空指针异常了。祝好!
解决方案五:
改成下面方式试试
http://blog.csdn.net/song2004_2008/article/details/524602
另外,看看
try{ conn = DriverManager.getConnection(DURLDUSERDPASS); }catch(SQLException e){ e.printStackTrace();//这里是否捕获到了异常,打印出什么异常信息 }
解决方案六:
conn = DriverManager.getConnection(DURLDUSERDPASS);
这个conn的值依然是null吧,后面调用conn.close()就报空指针异常了
解决方案七:
你有没有先建立ODBC数据源啊
解决方案八:
一般报java.lang.NullPointerException的原因有以下几种:
·字符串变量未初始化;
·接口类型的对象没有用具体的类初始化,比如:
List lt; 会报错
List lt = new ArrayList(); 则不会报错了
·当一个对象的值为空时,你没有判断为空的情况。
解决方案九:
你把你的数据库连接和断开语句拿到java环境debug一次就好了,看看哪儿报错!在JSP还真不好看!
解决方案十:
28行,conn.close();抛出的空指针异常,建议在此做一个处理。
eg:
if (conn ==null){
//TODO something
}else{
conn.close();
}