当前位置:编程学习 > JAVA >>

关于jsp中数据库的问题

<%@ page language="java" import="java.util.*" import="com.mysql.jdbc.Driver"
    import="java.sql.*" pageEncoding="utf-8" contentType="text/html;charset=gb2312" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <%
        Connection conn;
        Statement stat;
        String url="jdbc:mysql://localhost:3306/student";
        String userName="root";
        String password="200812";
        
        try{
           Class.forName("com.mysql.jdbc.Driver");
           }catch(ClassNotFoundException ex){
               out.println("Can't find Servlet");          
           }
       
        conn=DriverManager.getConnection(url,userName,password);
        
        try{
           stat=conn.createStatement();
           stat.executeUpdate("insert into student_info values(2008001,'宋文','13501010202')");
           stat.executeUpdate("insert into student_info values(2008002,'李建华','13503030404')");
           stat.executeUpdate("insert into student_Info values(2008003,'张星','13505050606')");
           stat.executeUpdate("insert into student_info values(2008004,'王晓林','13507070808')");
           
           //获取查询结果
           ResultSet result=stat.executeQuery("select * from student_info");
           
           out.println("<Table Border>");
           out.println("<TR><Td colspan=3 align=center>学生信息</Td></TR>");
           out.println("<TR>");
           out.println("<Td width=150>学号</Td>");
           out.println("<Td width=150>学生姓名</Td>");
           out.println("<Td width=150>联系电话</Td>");
           out.println("</TR>");
           
           while(result.next()){
                out.println("<TR>");
                out.println("<Td>"+result.getInt(1)+"</Td>");
                out.println("<Td>"+result.getString(2)+"</Td>");
                out.println("<Td>"+result.getString(3)+"</Td>");
                out.println("</TR>");
                out.println("数据表操作失败");
           }
           
           result.close();
           stat.close();
           
        }catch(SQLException ex){
             out.println("数据表操作失败");
        }
        finally{
           conn.close();
        }
     %>
  </body>
</html>
上面的程序中,mysql已经连接上,数据也写入了MySQL,不过在读数据时,不知道出了什么错,老是显示:数据表操作失败,也就是try语句块出错了。求解答??? --------------------编程问答-------------------- 你写 catch 的习惯不好,建议把ex的完整堆栈信息打印出来,类似:

} catch(SQLException ex){
  ex.printStackTrace();
  out.println("数据表操作失败");
} --------------------编程问答--------------------
while(result.next()){
  out.println("<TR>");
  out.println("<Td>"+result.getInt(1)+"</Td>");
  out.println("<Td>"+result.getString(2)+"</Td>");
  out.println("<Td>"+result.getString(3)+"</Td>");
  out.println("</TR>");
  out.println("数据表操作失败");
  }

这里有问题,ResultSet接口的getString(int)方法的int参数不是指数据表所有字段当中的 第几列,而是数据表当中是String对应的所有String字段当中的第几列,所以getString(3)会出错,因为你只有2列是string的字段,改为

while(result.next()){
  out.println("<TR>");
  out.println("<Td>"+result.getInt(1)+"</Td>");
  out.println("<Td>"+result.getString(1)+"</Td>");
  out.println("<Td>"+result.getString(2)+"</Td>");
  out.println("</TR>");
  out.println("数据表操作失败");
  }

试试 --------------------编程问答-------------------- 发现一个很奇怪的事情:
while(result.next()){
  out.println("<TR>");
  out.println("<Td>"+result.getInt(1)+"</Td>");
  out.println("<Td>"+result.getString(2)+"</Td>");
  out.println("<Td>"+result.getString(3)+"</Td>");
  out.println("</TR>");
  out.println("数据表操作失败"); // 你为什么要在循环里面输出“数据表操作失败”?!
} --------------------编程问答-------------------- 我刚刚居然没发现……

while(result.next()){
  out.println("<TR>");
  out.println("<Td>"+result.getInt(1)+"</Td>");
  out.println("<Td>"+result.getString(1)+"</Td>");
  out.println("<Td>"+result.getString(2)+"</Td>");
  out.println("</TR>");
  }

引用 3 楼  的回复:
发现一个很奇怪的事情:
while(result.next()){
  out.println("<TR>");
  out.println("<Td>"+result.getInt(1)+"</Td>");
  out.println("<Td>"+result.getString(2)+"</Td>");
  out.println("<Td>"+result.getString(……
--------------------编程问答-------------------- 修改好了:
         while(result.next()){
                out.println("<Tr>");
                out.println("<Td>"+result.getInt(1)+"</Td>");
                out.println("<Td>"+result.getString(1)+"</Td>");
                out.println("<Td>"+result.getString(2)+"</Td>");
                out.println("</Tr>");
           }
不过还是同样的错误,我就晕了。 --------------------编程问答--------------------

catch(SQLException ex){
  out.println("数据表操作失败");
  }

改为

catch(Exception ex){
  out.println("数据表操作失败");
  System.out.println(ex.printStackTrace();
);
  }

然后去tomcat或应用服务器的控制台看看打印的异常信息具体是什么

引用 5 楼  的回复:
修改好了:
  while(result.next()){
  out.println("<Tr>");
  out.println("<Td>"+result.getInt(1)+"</Td>");
  out.println("<Td>"+result.getString(1)+"</Td>");
  out.println("<Td>"+result.getString(2)+"<……
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,