问题描述
<%@pagecontentType="text/html;charset=utf-8"language="java"import="java.sql.*"import="java.io.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>无标题文档</title></head><body><%!inttotal=0;synchronizedvoidcountTotal(){total++;}%><%booleanvote=true;Stringname="";name=request.getParameter("name");if(name==null){name="?";}bytea[]=name.getBytes("ISO-8859-1");name=newString(a);StringIP=(String)request.getRemoteAddr();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(Exceptione){}Connectioncon=null;Statementsql=null;ResultSetrs=null;try{con=DriverManager.getConnection("jdbc:odbc:vote","gxy","123");sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs=sql.executeQuery("SELECT*FROMIPWHEREIP="+"'"+IP+"'");introw=0;while(rs.next()){row++;}if(row>=1){vote=false;}//rs.close();}catch(SQLExceptione){}if(name.equals("?")){out.print("您没有投票,没有权利看选举结果");}else{if(vote){out.print("您投了一票");countTotal();try{rs=sql.executeQuery("SELECT*FROMpeopleWHEREname="+"'"+name+"'");rs.first();intcount=rs.getInt("count");count++;Stringcondition="UPDATEpeopleSETcount="+count+"WHEREname="+"'"+name+"'";sql.executeUpdate(condition);Stringto="INSERTINTOIPVALUES"+"("+"'"+IP+"'"+")";sql.executeUpdate(to);}catch(SQLExceptione){out.print(e);}try{rs=sql.executeQuery("SELECT*FROMpeople");out.print("<tableBorder>");out.print("<TR>");out.print("<thwidth=100>"+"姓名");out.print("<thwidth=50>"+"得票数");out.print("<thwidth=50>"+"总票数:"+total);out.print("</TR>");while(rs.next()){out.print("<TR>");out.print("<td>"+rs.getString(1)+"</td>");intcount=rs.getInt("count");out.print("<TD>"+count+"</td>");doubleb=(count*100)/total;out.print("<td>"+b+"%"+"</td>");out.print("</TR>");}out.print("</table>");con.close();}catch(SQLExceptione){out.print(e);}}else{out.print("您已经投过票了");}}%></body></html>
它居然出现了java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]无效的游标状态这错误,我完全照书上打代码的啊,也检查了,没错啊,我错了不奇怪,清华书的作者也会错吗?声明我是初学者!!!声明我是初学者!!!声明我是初学者!!!
解决方案
解决方案二:
Statementsql再定义一个试试。好像是.next()之后就变了。我没调试过你的代码~~,不过建议试下。
解决方案三:
或则定义个不同的ResultSet对象。
解决方案四:
这里面rs是不是分一下,rs1,rs2。