谁帮我看看 返回语句应该写在哪里?

sunliwen1981 2003-08-19 04:40:43
public ArrayList getResult(){

try{
String sql=gs.getSQL();

ResultSet res=dbConn.executeQuery(sql);
ResultSetMetaData rsma = res.getMetaData();
int ccount = rsma.getColumnCount();


ArrayList rsArray = new ArrayList();
while (res.next()) {
for (int i = 2; i < ccount+1; i++) {
//System.out.print(i);
if (res.getString(i)==null){
rsArray.add("");
}else{
rsArray.add(res.getString(i));
}
}
}return rsArray;

}catch (Exception e) {
e.printStackTrace();
}}
...全文
42 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgj8750 2003-08-19
  • 打赏
  • 举报
回复
public ArrayList getResult(){
ArrayList rsArray = new ArrayList();
try{
String sql=gs.getSQL();

ResultSet res=dbConn.executeQuery(sql);
ResultSetMetaData rsma = res.getMetaData();
int ccount = rsma.getColumnCount();
while (res.next()) {
for (int i = 2; i < ccount+1; i++) {
//System.out.print(i);
if (res.getString(i)==null){
rsArray.add("");
}else{
rsArray.add(res.getString(i));
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
return rsArray;
}
arraylist的定义要放到try的外边,否则操作数据库的时候要是抛例外的话,就执行不了rsArray的定义,所以后面返回时就肯定会出错了!
xinshou1979330 2003-08-19
  • 打赏
  • 举报
回复
UP
sumny 2003-08-19
  • 打赏
  • 举报
回复
ejbcreate() 的对;

程序没问题,就返回得到的值,否则返回空的
noratong 2003-08-19
  • 打赏
  • 举报
回复
小弟的意见应该综合楼主的和ejbcreate的:
public ArrayList getResult(){
ArrayList rsArray = null;

try{
String sql=gs.getSQL();

ResultSet res=dbConn.executeQuery(sql);
ResultSetMetaData rsma = res.getMetaData();
int ccount = rsma.getColumnCount();


rsArray = new ArrayList();
while (res.next()) {
for (int i = 2; i < ccount+1; i++) {
//System.out.print(i);
if (res.getString(i)==null){
rsArray.add("");
}else{
rsArray.add(res.getString(i));
}
}
}
return rsArray;

}catch (Exception e) {
e.printStackTrace();
} finally {
return rsArray;}
}
jimaojian 2003-08-19
  • 打赏
  • 举报
回复
我觉得楼主的意见很好,就放那里 .
seaman0916 2003-08-19
  • 打赏
  • 举报
回复
ejbcreate 的意思很明显呀!

你把ArrayList rsArray = new ArrayList(); 放在 try { }之中,它相当与局部变量,在try之外当然不能访问了! 所以就不能return rsArray;

但是,如果把return rsArray;放在try { } 之内,像我说得那样,就没关系了!
seaman0916 2003-08-19
  • 打赏
  • 举报
回复
我倒认为 楼主 放的位置是合理的;

因为:
放在Try 的最后一行,当有异常抛出时,rsArray它就不会被正常返回,只有放在cacth()后才可以,但是,如果有异常抛出后,返回的rsArray还有没有意义???
所以我觉得应该按楼主的位置放.
但是catch(Exception e ) { e.printStackTrace(); return null;}
正常就返回 rsArray 否则 返回 null
这样写,可以根据返回的值判断数据库操作的正确性!!!
sunliwen1981 2003-08-19
  • 打赏
  • 举报
回复
ejbcreate 可以了,可是为什么要这样 写呢?
sunliwen1981 2003-08-19
  • 打赏
  • 举报
回复
ejbcreate为什么 阿,象你这杨 也不成啊
amortal 2003-08-19
  • 打赏
  • 举报
回复
写在最后,或则写在FINALLY里
ejbcreate 2003-08-19
  • 打赏
  • 举报
回复
按照他的代码,放在最后肯定会出错。
代码改一下,就可以放在最后了:
public ArrayList getResult(){
ArrayList rsArray = null;

try{
String sql=gs.getSQL();

ResultSet res=dbConn.executeQuery(sql);
ResultSetMetaData rsma = res.getMetaData();
int ccount = rsma.getColumnCount();


//ArrayList rsArray = new ArrayList();
rsArray = new ArrayList();
while (res.next()) {
for (int i = 2; i < ccount+1; i++) {
//System.out.print(i);
if (res.getString(i)==null){
rsArray.add("");
}else{
rsArray.add(res.getString(i));
}
}
}
//return rsArray;

}catch (Exception e) {
e.printStackTrace();
}
return rsArray;
}

javahui 2003-08-19
  • 打赏
  • 举报
回复
最后一个}前
ticlej 2003-08-19
  • 打赏
  • 举报
回复
写在最后就可以了;如果有必要,还可以在catch后的block内对rsArray赋值
swithgirl 2003-08-19
  • 打赏
  • 举报
回复
写在最后,或则写在FINALLY里

81,092

社区成员

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

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