java中查询一个成绩 但是查询语句返回值是一个集合 直接将集合转为字符串显示索引越界?

/***计算总成绩*@paramproj_id*@return*@throwsSQLException*/publicStringfindallscore(Stringp... /**
* 计算总成绩
* @param proj_id
* @return
* @throws SQLException
*/
public String findallscore(String proj_id) throws SQLException{

String sql="select sum(stu_core) from StuInfo_Core where proj_id='"+proj_id+"'";
return query(sql).toString();

}

protected void rs2arr(List<StuInfoCore> objs) throws SQLException {
// TODO 自动生成的方法存根
while(rs.next()){
StuInfoCore stuc=new StuInfoCore();
String stu_name=rs.getString(1);
String stu_core=rs.getString(2);
String pa_id=rs.getString(3);
String proj_id=rs.getString(4);
stuc.setStu_name(stu_name);
stuc.setStu_core(stu_core);
stuc.setPa_id(pa_id);
stuc.setProj_id(proj_id);
objs.add(stuc);

}
}
展开
 我来答
gpfhz
2014-10-06 · 超过27用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:43万
展开全部
你不是用的oracle查询的吧,是什么数据库?这个查询到的返回值我觉得好奇怪啊?一般来说query(sql)的结果使用resultSet来接收的,你可以试试先将查询到的结果用ResultSet接收以后,再遍历变成字符串
追问
sql数据库
追答
不好意思,sql数据库我没有操作过,但是所有的数据库有共性,你先试试把查询的结果用resultSet接收一下,然后遍历resultSet的每一个元素,转成String 字符串。比如
String [] str= new String[10];
ResultSet rs = query(sql);
int i = 0 ;
while(rs.next()){

StuInfoCore stuc=new StuInfoCore();
String stu_name=rs.getString(1);
String stu_core=rs.getString(2);
String pa_id=rs.getString(3);
String proj_id=rs.getString(4);
str[i]=stu_name +","+stu_core+","+proh_id;
i++;
}
String result = str.toString();
无箭的丘比特
2014-10-06 · TA获得超过2084个赞
知道小有建树答主
回答量:2047
采纳率:50%
帮助的人:1086万
展开全部
很明显,你select出来的只有一列sum(stu_core),而你在下边赋值的时候写了1、2、3、4列,当然越界了。
还有,这个方法之间是怎么套用的也没看明白。
追问
那应该怎么弄 ?  从数据库中取出来
追答
你采纳的答案解决了么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2014-10-06 · TA获得超过1243个赞
知道小有建树答主
回答量:2126
采纳率:55%
帮助的人:673万
展开全部
应该用if(rs.next()){
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式