我写了这样的一条SQL语句select Employees.Ename,Assessment.Astatus from Employees left outer join Assessment on Assessment.Aid=Employees.Eid and month(Assessment.Adate)=month(getdate()) where Employees.Edepartment=1在数据库建立查询能搜出数据,可打开网页时却会出错jsp中这样写:rs = con.getInfo(....以上的SQL语句);交替出现以下两个异常,非常诡异.....(我一直想不明白为什么异常偶尔会不同的 = = )com.microsoft.sqlserver.jdbc.SQLServerException: 无法从已删除行获取值。java.lang.NullPointerException
求解答~!!!!!!
求解答~!!!!!!
--------------------------------------------------------------------------------public ResultSet getInfo(String str){
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
try {
ctx = new InitialContext(ht);
ds = (javax.sql.DataSource) ctx.lookup("notice");
} catch (Exception e) {
e.printStackTrace();
}
if (ds == null) {
System.out.println("error");
} else {
System.out.println("Select OK!");
}
try{
mycon=ds.getConnection();
stmt=mycon.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(str);
}catch(Exception e){
System.err.println(e.getMessage());
e.printStackTrace();
}
return rs;
}
while(rs.next()){
id = String.valueOf(rs.getInt(1));
name = rs.getString(2);
src = rs.getString(3);
}这些列均无法读取,异常:com.microsoft.sqlserver.jdbc.SQLServerException: 无法从已删除行获取值。刚读出来的RS,怎么会删除行了?一头雾水
com.microsoft.sqlserver.jdbc.SQLServerException: 无法从已删除行获取值。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyCurrentRowIsNotDeleted(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(Unknown Source)
at weblogic.jdbc.wrapper.ResultSet_com_microsoft_sqlserver_jdbc_SQLServerResultSet.getInt(Unknown Source)
at jsp_servlet._personelmanage.__assessment1._jspService(__assessment1.java:131)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:413)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3212)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLETYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。
第二个参数设置 ResultSet 的并发性,该参数确定是否可以更新 ResultSet。其选项有:CONCUR_READ_ONLY:这是缺省值,指定不可以更新 ResultSet
CONCUR_UPDATABLE:指定可以更新 ResultSet
受其他用户的影响!别人把你的删除喽哇!看情况调整一下参数吧!