以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  [求助]希望高手能帮我解决一下,看看我的代码到底那里错了  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=38328)


--  作者:J2006
--  发布时间:9/26/2006 8:25:00 PM

--  [求助]希望高手能帮我解决一下,看看我的代码到底那里错了
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.lang.*"%>
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
//获得请求的参数。
String id=request.getParameter("userId");
String psw=request.getParameter("password");
//连接数据库
try {
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection con = DriverManager.getConnection("jdbc:odbc:book");
  Statement statement=con.createStatement();
  String isCorrect="select name,userId,email,userLogCount,userType,userLastLogTime from user_info where userId='" + id + "' and password='" + psw + "'";
  ResultSet result=statement.executeQuery(isCorrect);
  session.setAttribute("isLog",new String("0"));

  if(!result.next())
  {
    response.sendRedirect("index.jsp");//账号或密码错误,转入错误页面
    result.close();
    statement.close();
    con.close();
  }
  //如果查询后有记录,说明登录验证成功。
  else
  {
    //保存登录信息到session对象中。
    session.setAttribute("name",result.getString("name"));
    session.setAttribute("id",result.getString("userId"));
    session.setAttribute("email",result.getString("email"));
   // session.setAttribute("fav",result.getString("fanvcategory"));
    session.setAttribute("userType",new Integer(result.getInt("userType")));
    System.out.println(session.getAttribute("userType"));
    session.setAttribute("isLog",new String("1"));
    int count=result.getInt("userLogCount");    session.setAttribute("userLogCount",new Integer(count));
    count++;
    session.setAttribute("userLastLogTime",result.getString("userLastLogTime"));
    java.util.Date time1=new java.util.Date();//获得系统当前时间
    String sqltime=new Timestamp(time1.getTime()).toString();//将当前时间转换成sql server可以识别的对象
    //更新登录信息。
    statement.execute("update user_info set userLogCount="+count+",userLastLogTime='"+sqltime+"' where userId='" + id +"'");
    //关闭数据库连接相关的资源。
    statement.close();
    con.close();
    //把页面派发到目的
    response.sendRedirect("index.jsp");
  }
} catch (Exception e) {
  e.printStackTrace();
}
%>
</body>
</html>
编译后提示是java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引
好象说是 int count=result.getInt("userLogCount");这个地方有问题,我查了半天,也没有搞清楚到底是怎么回事,希望高手帮忙接答一下,谢谢了~


--  作者:free_hit
--  发布时间:10/7/2006 10:02:00 PM

--  
下面你说的我倒是没有看出来,不过前面好像也有个错误
  if(!result.next())
  {
    response.sendRedirect("index.jsp");//账号或密码错误,转入错误页面
    result.close();
    statement.close();
    con.close();
  }应该把 response.sendRedirect("index.jsp");放到con.close();后面

--  作者:wcdxyl
--  发布时间:10/27/2006 2:13:00 PM

--  
你用的jdbc数据源,估计没有注册到sql server吧。
--  作者:shangfengsf
--  发布时间:11/20/2006 9:22:00 AM

--  
你把 这段程序 int count=result.getInt("userLogCount");  
放在  
session.setAttribute("email",result.getString("email"));
之后试试吧!
数据库好象是按顺序解析的!
你好厉害,用那么多session,系统开销太大了!

--  作者:lyf813
--  发布时间:12/17/2006 3:47:00 PM

--  
你的那句int count=result.getInt("userLogCount");    
应该这样写:
if(result.next())
{
    int count=result.getInt("userLogCount");
}
结果集的结果不能直接赋值,必须先判断结果集是否为空。
--  作者:decel
--  发布时间:4/8/2007 4:16:00 AM

--  
三个可能,
1,你的服务器里有没有放数据库驱动.
2,你的数据库没有SP4补丁.
3,看的result.getInt("userLogCount");userLogCount在你数据库里是什么类型的?是不是int类型的?


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
2,413.086ms