SQL的一些问题
1.连接数据库使用的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@page import="com.mysql.jdbc.Driver"%> <%@page import="java.sql.*"%> <% // 注册jdbc驱动 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 设置连接字符串(包括主机名,端口,数据库名,用户名,密码等) String uri = "jdbc:mysql://localhost:3306/checkmysql?user=root&password=123123"; // 建立数据库连接 Connection connection = DriverManager.getConnection(uri); // 创建语句 Statement statement = connection.createStatement(); // 执行查询语句,并将结果保存在resultSet对象中 ResultSet resultSet = statement.executeQuery("SELECT * FROM emp"); // 循环读取表 while(resultSet.next()){ out.print(resultSet.getString(1)+"&&"+resultSet.getString(2)+"<br>"); } %>
|
在这之前,需要在项目中引入mysql-connector-java-5.1.13-bin.jar这样的一个jar包
报错的部分代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 19 in E:\aboutmyeclipse\apache-tomcat-7.0.42\work\Catalina\localhost\testsql\org\apache\jsp\index_jsp.java/ Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423) org.apache.jasper.compiler.Compiler.compile(Compiler.java:308) org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) org.apache.jasper.compiler.Compiler.compile(Compiler.java:273) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) 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) com.xj.mobile.filter.EncodingFilter.doFilter(EncodingFilter.java:27)
|
对于上面的那个的详细解决方法是:
1 2 3 4
| 1:下载mysql-connector-java-x.x.x-bin.jar,目前最新版为mysql-connector-java-5.1.22-bin.jar。 在Eclipse中,选择 项目->属性->Java构建路径,在“库”选项卡中,选择“添加外部JAR”,找到下载的mysql-connector-java-5.1.22-bin.jar文件,将其添加进项目。 2: 在web项目中还需要把jar 文件放入tomcat 的lib 目录中
|
3、引入的外部的jar包为啥进不去WEB-INF的lib
解决方法:直接找到mysql-connector-java-5.1.22-bin.jar,然后复制,并粘贴到web项目的WEB_INF的lib目录下面即可。
4、访问出错:
1
| 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)
|
解决方法:
你的工程/WEB-INF/lib下面看有没有servlet-api.jar、jsp-api.jar 等在Apache Software Foundation/Tomcat6.0/lib 下面已经存在的jar包, 如果有则删除。重启后,问题解决。
但是我的问题并没有解决:
报错如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) 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.check_005flogin_jsp._jspService(check_005flogin_jsp.java:90) 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)
|
对于上述的解决办法是:(在程序中,我的表名写错了!)
一:是在你的SQL语句上做修改,产生NULL的原因有可能是你数据库里的值就是NULL,这种情况可以用ORACLE的NVL函数来解决,例如:NVL(NULL, 0);
二:是在jsp页面做修改,虽然传到前台的值是NULL,可以在jsp页面把NULL转换成你所需要的值。例如:可以通过if语句判断后把你要显示在jsp页面的值赋予你想要的值(0)。
我改 表名之后就没有报错了