关于java中使用sql查询的一些问题

java使用sql查询,然后在页面上显示,从A表中查询出部分数据,然后利用A表中的字段id去B表中查询另外的两个数据,但是有要求,如果B表中查询出数据就显示到页面上,如果... java使用sql查询,然后在页面上显示,从A表中查询出部分数据,然后利用A表中的字段id去B表中查询另外的两个数据,但是有要求,如果B表中查询出数据就显示到页面上,如果查询不到数据,页面上就不显示值,我是打算先从A表中查询数据,然后取出其中的ID,再把id作为查询条件传参到另一个方法中去查询B表,可是一直查不出来值,求大神指导一下
上图中圈中的部分是在另一个表中查询的数据,其他数据假设由A表中查询到,A表中的id是主键,关联了AB两表,A表的id作为查询条件到B表中进行查询,如果能查到数据,就把数据显示到页面上,查不到就显示空
展开
 我来答
庄经略7s
2015-01-26 · TA获得超过155个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:215万
展开全部
给你个页面参考下
<%
df = new SimpleDateFormat("yyyyMMdd");
String sh=df.format(new Date());
String ID=(String)session.getAttribute("pa2");
String sql="select count(*) as num from lz.flow_task where SERIALNO like '"+sh+"%'";
ResultSet rt=st.executeQuery(sql);
int a=0;
if(rt.next()){
a=rt.getInt("num");
}
rt.close();
String fh = String.format("%s%04d",sh,(a+1));
sql="select ygbh,GETNAME(ygbh) as name from lz.db_user where qx='2' and inf ='工程师' and ygbh not in (select userid from lz.flow_task where type='权限剥夺') "
+" and ygbh in (select sendid from lz.flow_history where userid='"+ID+"')";
rt=st.executeQuery(sql);
%>
<%
int b=0;
while(rt.next()){
if(b==0){
%>
<option value="<%=rt.getString("ygbh")%>" selected="selected"><%=rt.getString("ygbh")%>-<%=rt.getString("name")%></option>
<%
b++; }else{
%>
<option value="<%=rt.getString("ygbh")%>"><%=rt.getString("ygbh")%>-<%=rt.getString("name")%></option>
<%
}
}
rt.close();
%>

建议就直接放在一个sql语句中实现就好了,另外执行的查询表B的语句在日志中打印出来,自己手动执行看看有没有结果,这样排错更方便。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冯宛塘
2015-01-26
知道答主
回答量:6
采纳率:0%
帮助的人:7549
展开全部
可能是你查A的时候还没查完就开始查B了
或者是从A查到了但是查出的数据编码有问题
导致你即使查到了再从B查时也查不到了
所以查出来的值你打印一下看对不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ysq13666109819
2015-01-26 · 超过89用户采纳过TA的回答
知道答主
回答量:162
采纳率:0%
帮助的人:105万
展开全部
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
String id=String.valueOf(rs.getObject(字段名));

//结果集的字段值只能用循环取,取到一个查一个吧,或者你用个集合先装起来

}
追问
取值我已经取到了,后面该怎么写,怎么将这个值的群组传到另一个方法去再进行查询
追答
看了你的补充我觉得应该用多表连接查询啊。。
如果你要传id作为参数到另外的方法也可以就在循环里面完成啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
骑士小乡
2015-01-26 · TA获得超过282个赞
知道小有建树答主
回答量:125
采纳率:100%
帮助的人:88.7万
展开全部
select * from B where id=(select id from A where (查询条件));
这样写查询语句应该就能找到吧,能把你问题说清楚些么?你是查询语句有问题,还是java代码问题?
追问
看问题补充
追答
你A表的查询正常来,B表查询按我给你的语句查,得到数据直接显示不行么?
你查询B表时得不到A表的Id?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式