package db;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnDb {
public static Connection startConn() {
Connection con = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:news", "", "");
} catch (Exception e) {
System.out.println("初始化出现异常");
e.printStackTrace();
}
return con;
}
public static void insert(String name,String info){
Connection con = null;
Statement stmt = null;
try {
   con=startConn();
stmt=con.createStatement();
String sql="insert into news values('"+name+"',now(),'"+info+"')";
stmt.executeUpdate(sql);
} catch (SQLException e) {
System.out.println("插入时出现异常");
e.printStackTrace();
}
finally{

close(stmt,con);

}



}

public static void close(ResultSet rs,Statement stmt,Connection con) {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e) {
System.out.println("关闭时出现异常1");
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(Statement stmt,Connection con) {
try {
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e) {
System.out.println("关闭时出现异常2");
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(Connection con) {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
System.out.println("关闭时出现异常3");
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
*************************************
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    
    <title>My JSP 'index.jsp' starting page</title>

  </head>
  
  <body>
    <form action="a.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <p>新闻标题:
    <input type="text" name="name" />
</p>
  <p>新闻内容:
    <textarea name="info" cols="25" rows="10"></textarea>
  </p>
  <p>
    <input type="submit" name="Submit" value="提交" />
  </p>
</form>
  </body>
</html>
********************************************
<%@ page language="java" import="java.util.*,db.ConnDb" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
    <%
    String name = new String( request.getParameter("name").getBytes("iso-8859-1"));
    String info=new String(request.getParameter("info").getBytes("iso-8859-1"));
    ConnDb.insert(name,info);
    
     %>
    <title>My JSP 'a.jsp' starting page</title>
    
  </head>
  
  <body>
    <table>
    <tr>
    <td>
    新闻标题<%=name %>
    </td>
    <td>新闻内容<%=info %></td>
    </tr>
    
    </table>
  </body>
</html>错误信息:java.lang.NullPointerException
org.apache.jsp.a_jsp._jspService(a_jsp.java:52)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【peterandy0116】截止到2008-07-03 15:01:58的历史汇总数据(不包括此帖):
    发帖的总数量:7                        发帖的总分数:60                       
    结贴的总数量:7                        结贴的总分数:60                       
    无满意结贴数:4                        无满意结贴分:65                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:57.14 %               无满意结分率:108.33%                  
    敬礼!
      

  2.   

    根据你的栈轨迹来看,似乎还没有开始插入数据呢!null的应该是他们两个中的一个.
    request.getParameter("name")
    request.getParameter("info")楼主试试,另外,不赞成在jsp里面操作数据库.~额.我承认,JSTL提供了数据库访问标签
      

  3.   

    都没有做非空判断,
    String name = new String( request.getParameter("name").getBytes("iso-8859-1")); 
        String info=new String(request.getParameter("info").getBytes("iso-8859-1")); 
    你先看看他们是不是有数据
      

  4.   

    最好这样写,String name=request.getParameter("name");
    String info=request.getParameter("info");
    在这之后再做编码转换
      

  5.   

    另外,记得String sql="insert into news values('"+name+"',now(),'"+info+"')"; 
    这里的now()好像也要加引号,记不太清了,楼主试下吧,如果通过编译后数据库里的数据有问题的话,可能是出在这里,
      

  6.   


     <% 
        String name = new String( request.getParameter("name").getBytes("iso-8859-1")); 
        String info=new String(request.getParameter("info").getBytes("iso-8859-1")); 
        ConnDb.insert(name,info); 
        
        %> 你没有做空判断啊,如果request.getParameter("name")为空,肯定产生错误呀
    要在有可能产生空的地方加一个判断,比如:
    String name = request.getParameter("name")==null?"":request.getParameter("name").trim();