首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套SELECT查询Java + MySQL

问嵌套SELECT查询Java + MySQL
EN

Stack Overflow用户
提问于 2011-03-25 11:38:50
回答 1查看 6.3K关注 0票数 0

我正在试着从数据库中获取数据。

我必须使用to查询。

从第一个查询(In Loop)中,我获得了工作代码codew,并在第二个查询中使用它来获取名称。

下面的代码运行正常,没有错误。

第一个查询提取行,但第二个查询不执行。

代码语言:javascript
复制
int i=0;
c= new Connect().getCon();
try{

    java.sql.Statement st = c.createStatement();
    String sql= " SELECT  distinct(s.codew), title, nberstat, desc_w, dated,datef" +
                " FROM work w, employe e, stat s " +
                " WHERE w.codew=s.codew " +
                " and s.idemploye= e.idemploye " +
                " and stat_w=0 " +
                " and w.idcreator= 1";
     System.out.println(sql);       
    ResultSet res = (ResultSet) st.executeQuery(sql);
    String allW ="";
    while (res.next()) 
    {             
     String codew = res.getString("codew");  
     String title = res.getString("title");
     String desc_w = res.getString("desc_w");
     String dated = res.getString("dated");
     String date = res.getString("datef");
     int nberstat = res.getInt("nberstat"); String strnberstat = Integer.toString(nberstat);

    ///////////////////////////////////
        try
        {
            java.sql.Statement st2 = c.createStatement();
            q="SELECT distinct (name), lname From stat s, employe e WHERE codew LIKE '"+codew+"'";
            ResultSet res2 = (ResultSet) st2.executeQuery(q);
            while (res2.next()) 
            {
             String name = res.getString("name");
             String lname = res.getString("lname");
             allW = name + " "+lname+", "+allW;
            }
        }
        catch (SQLException s)
        {
            System.out.println("SQL code does not execute.");
        } 

     /////////////////////////////

........

}
c.close();
}
catch (SQLException s){
System.out.println("SQL code does not execute.");
} 

我在控制台的第二个查询中得到了这个!SQL code does not execute.,提前谢谢。致以最好的问候,阿里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-25 11:46:45

首先,应该使用带有sql参数"?“的PreparedStatement。以防止Sql注入。

其次,您在第二个循环中使用了错误的语句。您应该使用res2,而不是res。

这应该是:

代码语言:javascript
复制
 String name = res2.getString("name"); //not res
 String lname = res2.getString("lname"); //not res

第三,你应该添加一个finally{}块并关闭你的连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5428291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档