关于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表中进行查询,如果能查到数据,就把数据显示到页面上,查不到就显示空 展开
上图中圈中的部分是在另一个表中查询的数据,其他数据假设由A表中查询到,A表中的id是主键,关联了AB两表,A表的id作为查询条件到B表中进行查询,如果能查到数据,就把数据显示到页面上,查不到就显示空 展开
4个回答
展开全部
给你个页面参考下
<%
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的语句在日志中打印出来,自己手动执行看看有没有结果,这样排错更方便。
<%
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的语句在日志中打印出来,自己手动执行看看有没有结果,这样排错更方便。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能是你查A的时候还没查完就开始查B了
或者是从A查到了但是查出的数据编码有问题
导致你即使查到了再从B查时也查不到了
所以查出来的值你打印一下看对不对
或者是从A查到了但是查出的数据编码有问题
导致你即使查到了再从B查时也查不到了
所以查出来的值你打印一下看对不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
String id=String.valueOf(rs.getObject(字段名));
//结果集的字段值只能用循环取,取到一个查一个吧,或者你用个集合先装起来
}
while(rs.next()){
String id=String.valueOf(rs.getObject(字段名));
//结果集的字段值只能用循环取,取到一个查一个吧,或者你用个集合先装起来
}
追问
取值我已经取到了,后面该怎么写,怎么将这个值的群组传到另一个方法去再进行查询
追答
看了你的补充我觉得应该用多表连接查询啊。。
如果你要传id作为参数到另外的方法也可以就在循环里面完成啊
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from B where id=(select id from A where (查询条件));
这样写查询语句应该就能找到吧,能把你问题说清楚些么?你是查询语句有问题,还是java代码问题?
这样写查询语句应该就能找到吧,能把你问题说清楚些么?你是查询语句有问题,还是java代码问题?
追问
看问题补充
追答
你A表的查询正常来,B表查询按我给你的语句查,得到数据直接显示不行么?
你查询B表时得不到A表的Id?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询