注册 登录
编程论坛 J2EE论坛

严重异常问题??急!!!!

Javapet 发布于 2008-05-07 00:27, 1822 次点击
请问这个是什么异常啊??
javax.servlet.ServletException: com.microsoft.jdbc.sqlserver.SQLServerConnection.prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.post_jsp._jspService(post_jsp.java:118)
    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)


root cause

java.lang.AbstractMethodError: com.microsoft.jdbc.sqlserver.SQLServerConnection.prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;
    org.apache.jsp.post_jsp._jspService(post_jsp.java:63)
    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:(post.jsp)
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.sql.*"%>

<%
    request.setCharacterEncoding("GB2312");
    try
    {
            String action=request.getParameter("action");
            if("post".equals(action))
            {           
                        String title=request.getParameter("title");
                        String cont=request.getParameter("cont");
                        cont=cont.replaceAll("\n","<br>");
                        
                        String DBDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
                    String DBURL="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Javapet;SelectMethod=cursor";
                        String sql="insert into lunTan(pid,rootid,title,cont,pdate,isleaf) values(0,?,?,?,'2008',0)";
                        Class.forName(DBDRIVER);
                        Connection conn=DriverManager.getConnection(DBURL,"sa","123456");
                        conn.setAutoCommit(false);
                    PreparedStatement ps=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
                    Statement stm=conn.createStatement();
                    
                    ps.setInt(1,-1);
                    ps.setString(2,title);
                    ps.setString(3,cont);
                ps.executeUpdate();
              
                ResultSet rsKey=ps.getGeneratedKeys();
                rsKey.next();
                int Key=rsKey.getInt(1);
                rsKey.close();
                
                stm.executeUpdate("update lunTan set rootid="+Key+"where id="+Key);
                
                ();
                conn.setAutoCommit(true);
                
                stm.close();
                ps.close();
                conn.close();
                response.sendRedirect("show.jsp");
                }
        }
        catch(Exception e)
        {
                e.printStackTrace();
        }
%>
<html>
    <body>
        <center>
        <form action="post.jsp" method="post">
            <input type="hidden" name="action" value="post">
            <table border=1>
                <tr>
                    <td align="center"><input type="text" name="title" size="81"</td>
                </tr>
                <tr>
                    <td><textArea cols=80 rows=15 name="cont"></textArea></td>
                </tr>
                <tr>
                    <td align="center"><input type="submit" value="提交"></td>
                </tr>
            </table>
        </form>
      </center>
    </body>
</html>


代码2:(show.jsp)
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.sql.*"%>

<%    
    String DBDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String DBURL="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Javapet";
        Class.forName(DBDRIVER);
        Connection conn=DriverManager.getConnection(DBURL,"sa","123456");
        PreparedStatement ps=conn.prepareStatement("select * from lunTan where pid=0");
    ResultSet rs=ps.executeQuery();   
%>
<html>
    <body>
        <a href="post.jsp">发表新帖</a>
        <table border=1>
<%
              while(rs.next())
              {
%>
            <tr>
              <td><%=rs.getInt("id")%></td>
                <td><%=rs.getString("cont")%></td>
            </tr>
<%              
              }
                rs.close();
        ps.close();
        conn.close();
%>
        </table>
    </body>
</html>

[[it] 本帖最后由 Javapet 于 2008-5-8 01:22 编辑 [/it]]
9 回复
#2
Starlove2008-05-07 13:29
PreparedStatement的用法似乎是
至少有有一个 ? 占位号
#3
Javapet2008-05-07 15:07
怎么样解决?请指教!
#4
天使坠落的眼泪2008-05-08 23:11
包版本问题
#5
ltdtfking2008-05-16 11:19
你试试换一个数据驱动,我也遇到过这种问题换了驱动就好了
#6
弑杀耶稣2008-05-21 13:20
驱动文件!
#7
2008-06-01 00:04
建议楼主,不要在JSP内写这种代码,这样调试起来太困难了,最好采用MVC结构,把和数据库打交道的代码直接写在java文件里。把从DB抽出的数据放入Lis或map里,在传到Jsp里。
#8
Ethip2008-06-01 09:38
回复 7# saberasurada 的帖子
有点深奥哦...
#9
Javapet2008-06-01 12:47
可能是用数据驱动问题,但我还没有换,我用另一种方式去实现了,谢谢大家的意见!
#10
2008-06-04 22:45
回复 8# Ethip 的帖子
不知这位高人指的深奥是什么?
1