关于jsp中数据库的问题

juntian1991 2012-08-17 11:05:02
<%@ 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语句块出错了。求解答???
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
juntian1991 2012-08-17
  • 打赏
  • 举报
回复
修改好了:
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>");
}
不过还是同样的错误,我就晕了。
风尘中国 2012-08-17
  • 打赏
  • 举报
回复
我刚刚居然没发现……

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>");
}

[Quote=引用 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(……
[/Quote]
MiceRice 2012-08-17
  • 打赏
  • 举报
回复
发现一个很奇怪的事情:
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("数据表操作失败"); // 你为什么要在循环里面输出“数据表操作失败”?!
}
风尘中国 2012-08-17
  • 打赏
  • 举报
回复
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("数据表操作失败");
}

试试
MiceRice 2012-08-17
  • 打赏
  • 举报
回复
你写 catch 的习惯不好,建议把ex的完整堆栈信息打印出来,类似:

} catch(SQLException ex){
ex.printStackTrace();
out.println("数据表操作失败");
}
风尘中国 2012-08-17
  • 打赏
  • 举报
回复

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

改为

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

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

[Quote=引用 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)+"<……
[/Quote]

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧