为什么我的这个语句不能查询出来结果,在mysql里直接执行,是可以的。我在java里运行出来result里面是null

Stringsql="SELECT*FROMpayfeeannalWHEREPayFeeId=?LIMIT?,?";Object[]params={AccountId,b... String sql="SELECT * FROM payfeeannal WHERE PayFeeId=? LIMIT ?,?";
Object[] params={AccountId,begin,sum};
Result result=DBHelper.runSelectSql(sql,params);
还有,我的runSelectSql(sql,params);执行另外一个带参数的sql语句是可以的。
public static Result runSelectSql(String sql,Object[] params){
Connection con=null;
PreparedStatement ps=null;
ResultSet res=null;
Result result=null;
try{
con=getConnection();
ps=con.prepareStatement(sql);
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
res=ps.executeQuery();
result=ResultSupport.toResult(res);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
res.close();
ps.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
return result;
}
展开
 我来答
lvrenrui
2012-02-21 · TA获得超过1467个赞
知道小有建树答主
回答量:549
采纳率:100%
帮助的人:557万
展开全部
我在使用jdbc执行其他SQL查询时也碰到过类似情况
我想会不会是jdbc不兼容某些sql语句造成的

还有rs是默认单向查询的,楼主结合一下自己的数据库结构看看会不会是顺序问题造成的无结果。

我也很希望知道原因,希望能一起探讨哈~
更多追问追答
追问
我带的条件是查询PayFeeId=1的记录。在数据库中是第一条和第四条符合条件。我以前用的sqlserver,可能没有这样的问题吧。有办法就告诉我啊,我自己也在看看。
追答
那你的limit 参数应该是 (limit 0,n) n>=4才能得到你想要的结果
(这里只是提醒你一下limit用法,不过我想你应该懂得如何使用的)

要不你试一下去掉limit看jdbc能不能查到结果,我上次用jdbc做pivot查询也无法使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汪雄辉拉
2012-02-21 · TA获得超过2966个赞
知道大有可为答主
回答量:1430
采纳率:0%
帮助的人:1633万
展开全部
楼主,finally的执行顺序要早于 return,finally中res.close();已经关掉了,所以,result 就被清空了
更多追问追答
追问
我把Result 定义在try外面了,在finally关闭的时候,result的值已经取到了啊。
追答
result是个引用,本身没什么值,虽然在执行result=ResultSupport.toResult(res);后指定了新的引用地址,但是在return前就进行的close操作,所以引用没了,你可以试试在result=ResultSupport.toResult(res); 下面加个打印System.out.println(result);应该不是null
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
idbd01
2012-02-21 · 超过17用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:52.2万
展开全部
我不懂java,只是提供个参考了,
ps.setObject(i+1, params[i]);
这里会不会有类型的问题?

比如说,你把一个字符串"123"和一个整数123,放到object数组params中,当PreparedStatement 这个玩意从params里取出值,放到sql语句中时,是直接放的123还是放的'123'?

网上查的,setObject有下面这个重载
void setObject(int parameterIndex, Object x, int TargetJdbcType),
貌似第三个参数就是类型吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yu165683
2012-02-21 · TA获得超过961个赞
知道小有建树答主
回答量:150
采纳率:100%
帮助的人:98.8万
展开全部
看看你的runSelectSql方法是怎么样写的
更多追问追答
追问
runSelectSql方法补充了。
追答
你打印看看你的res对象取到值没
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xxxx96112993
2012-02-21 · 超过14用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:47.3万
展开全部
我去payfeeid应该是唯一的吧,既然是唯一,那就只能查到1条数据
,但你的limit是什么意思呢?几条?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式