Javapet 发表于 2008-5-7 00:27

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

请问这个是什么异常啊??
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.commit();
                        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]]

Starlove 发表于 2008-5-7 13:29

PreparedStatement的用法似乎是
至少有有一个 ? 占位号

Javapet 发表于 2008-5-7 15:07

怎么样解决?请指教!

天使坠落的眼泪 发表于 2008-5-8 23:11

包版本问题

ltdtfking 发表于 2008-5-16 11:19

你试试换一个数据驱动,我也遇到过这种问题换了驱动就好了

弑杀耶稣 发表于 2008-5-21 13:20

驱动文件!

saberasurada 发表于 2008-6-1 00:04

建议楼主,不要在JSP内写这种代码,这样调试起来太困难了,最好采用MVC结构,把和数据库打交道的代码直接写在java文件里。把从DB抽出的数据放入Lis或map里,在传到Jsp里。

Ethip 发表于 2008-6-1 09:38

回复 7# saberasurada 的帖子

有点深奥哦...[tk09]

Javapet 发表于 2008-6-1 12:47

可能是用数据驱动问题,但我还没有换,我用另一种方式去实现了,谢谢大家的意见!

saberasurada 发表于 2008-6-4 22:45

回复 8# Ethip 的帖子

不知这位高人指的深奥是什么?

页: [1]

编程论坛