在javabean中访问oracle的问题:java.sql.SQLException: 无效的列索引?

flyboat 2004-10-12 01:38:19
出错代码:
500 Servlet Exception
java.sql.SQLException: 无效的列索引
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.driver.OracleStatement.prepare_for_new_get(OracleStatement.java:3199)
at oracle.jdbc.driver.OracleStatement.getIntValue(OracleStatement.java:4264)
at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:510)
******************************关键是下面这行**************************
at testChart.createDataBean.getTotalData(createDataBean.java:73)
at _jsp._boat._indexofchartdemo__jsp._jspService(/boat/IndexOfChartDemo.jsp:21)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.pageservice(Page.java:571)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:155)
at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:211)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:177)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:221)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:263)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:323)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:430)
at com.caucho.util.ThreadPool.run(ThreadPool.java:377)
at java.lang.Thread.run(Thread.java:534)


--------------------------------------------------------------------------------
Resin-3.0.7 (built Wed, 24 Mar 2004 04:28:45 PST)
***********************下面是javabean的源码***********************************************
......

Connection conn=null;
Statement stm=null;
GetDatabaseConnection getConn=new GetDatabaseConnection("mydb");
conn=getConn.getConnection();

//查询现有服务类型
String sqlServiceType="select distinct ServiceType from testTable "+
" where UserState=1 or UserState=0";
//查询地区代码
String sqlAreacode="select distinct areacode from testTable"+
" where UserState=1 or UserState=0";
stm=conn.createStatement();
ResultSet rsServiceType = stm.executeQuery(sqlServiceType);
ResultSet rsAreacode = stm.executeQuery(sqlAreacode);


String[] serviceTypes=new String[serviceNum];
//地区的数目
int areaNum=rsAreacode.getRow();
//地区号码
String[] areaCodes=new String[areaNum];

int n=0;
while(rsServiceType.next()){
serviceTypes[n]=rsServiceType.getString(0);
n++;
}
rsServiceType.close();

int m=0;
while(rsAreacode.next()){
int areaCodesInt=rsAreacode.getInt(0);<----报错的73行!!!*****************
areaCodes[m]=Integer.toString(areaCodesInt);
m++;
}
........
...全文
282 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyboat 2004-10-12
  • 打赏
  • 举报
回复
up
flyboat 2004-10-12
  • 打赏
  • 举报
回复
加了rsAreacode.last();后
java.sql.SQLException: 对只转发结果集的无效操作: last
??
flyboat 2004-10-12
  • 打赏
  • 举报
回复
??
改为rsAreacode.getInt(1);
出现:
java.lang.ArrayIndexOutOfBoundsException: 0
皮鲁 2004-10-12
  • 打赏
  • 举报
回复
..getString(1);
..rsAreacode.getInt(1);
禽兽v5 2004-10-12
  • 打赏
  • 举报
回复
另外,按字段名读取的话,如果是通过计算的,要加别名。比如:

select count(Id) as cnt from USERTABLE

那么就可以

rs.getInt("cnt");
flyboat 2004-10-12
  • 打赏
  • 举报
回复
to:tiger_shi()
加上rsAreacode.last();后,报错:
java.sql.SQLException: 对只转发结果集的无效操作: last
禽兽v5 2004-10-12
  • 打赏
  • 举报
回复
ResultSet下标从1开始读。比如

rsServiceType.getString(1);
flyboat 2004-10-12
  • 打赏
  • 举报
回复
to:laughter75(汤姆.凯特)
areacode在数据库中的类型 是NUMBER
我的代码里没有“rsAreacode.getInt("areacode")”啊?
flyboat 2004-10-12
  • 打赏
  • 举报
回复
多谢
试试先
laughter75 2004-10-12
  • 打赏
  • 举报
回复
问一下 rsAreacode.getInt(0) 指的是 areacode 吧,那么areacode在数据库中的类型 是int吗?!
如果是你用rsAreacode.getInt("areacode")是什么结果?!
tiger_shi 2004-10-12
  • 打赏
  • 举报
回复
//地区的数目
int areaNum=rsAreacode.getRow();
地区数目得不到吧
这样不行!
try this
rsAreacode.last();
int areaNum=rsAreacode.getRow();

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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