Html java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]将值插入数据库时,光标状态无效
下面的代码是我的应用程序的一部分,当执行此命令时,我得到无效的游标状态错误,我使用的是SQLServer2005、jsp和htmlHtml java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]将值插入数据库时,光标状态无效,html,jsp,tomcat,sql-server-2005,Html,Jsp,Tomcat,Sql Server 2005,下面的代码是我的应用程序的一部分,当执行此命令时,我得到无效的游标状态错误,我使用的是SQLServer2005、jsp和html <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("Jdbc:Odbc:disman"); java.sql.Statement stmt = con.createStatement(); stmt.exe
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("Jdbc:Odbc:disman");
java.sql.Statement stmt = con.createStatement();
stmt.executeUpdate("insert into earthquake(area,rictor,eqz,kms,city,state,date1,time,population,carea,farea,pland,animals,humanlife,animalsloss,sinjury,mininjury)values('"+area+"','"+rictor+"','"+eqz+"','"+kms+"','"+city+"','"+state+"','"+date1+"','"+time+"','"+population+"','"+carea+"','"+farea+"','"+pland+"','"+animals+"','"+humanlife1+"','"+animalsloss1+"','"+sinjury1+"','"+mininjury1+"')");
String items[]=request.getParameterValues("cmbitem");
int i=0;
ResultSet rs1=stmt.executeQuery("select * from earthquake");
int eid=rs1.getInt("eid");
while(i < items.length)
{ String itm=items[i];
if(itm.equals("water bottle"))
{
int totallits=rempop*3;
int totalbottles=(int)(totallits/litperbottle);
stmt.executeUpdate("insert into eq_requirement(eid,items,noitems) values('"+eid+"','"+itm+"','"+totalbottles+"'");
i++;
break;
}
else if(itm.equals("nurses"))
{
int totaldoctors=(int)(sinjury/10);
totaldoctors=(int)(totaldoctors+(mininjury/20));
int totalnurses=totaldoctors*2;
stmt.executeUpdate("insert into eq_requirement(eid,items,noitems) values('"+eid+"','"+itm+"','"+totalnurses+"'");
i++;
break;
}
else
{
out.println("<script language=javascript>alert('Earth Quake Details not added');</script>");
}
}
out.println("<script language=javascript>alert('Earth Quake Details Added Successfully');</script>");
con.close();
}
catch(Exception e)
{
out.println(e);
}
}//if update==true
}//if post event
%>
检查您的insert语句,如果您错过了大括号
stmt.executeUpdate("insert into eq_requirement(eid,items,noitems)
values('"+eid+"','"+itm+"','"+totalbottles+"')");
还有这里
stmt.executeUpdate("insert into eq_requirement(eid,items,noitems)
values('"+eid+"','"+itm+"','"+totalnurses+"')");
更新:
ResultSet rs1=stmt.executeQuery("select * from earthquake");
while(rs1.next){
int eid=rs1.getInt("eid");
}
希望这有帮助
旁注:避免sql错误的最佳方法是在执行之前打印查询,并在sql developer中运行它们Sir谢谢您的回复,但它仍然会给出相同的错误。列名可能是您检查了表中的列吗?我检查了列名,它们与表中的列一样正确。还有一件事是**stmt.executeUpdate(“插入地震(地区、里克托、eqz、kms、城市、州、日期1、时间、人口、carea、farea、计划、动物、人类生命、动物损失、地震、mininjury)值(“+area+”、“+Ri克托+”、“+eqz+”、“+kms+”、“+city+”、“+state+”、“、“+date1+”、“、“+time+”、“、“+carea+”、+pland+”、“、“+FARED+”、“+“、”、“+humanlife1+”、“+animalsloss1+”、“+sinjury1+”、“+mininjury1+”)”;**这工作正常。您是否对它们指定了任何约束条件?我指的是数据库中执行注释中提到的查询的列?现在在哪一行出现错误?