java - 嵌套 SELECT 查询 Java + MySQL

标签 java mysql select nested

我正在尝试从数据库获取数据。

我必须使用查询。

从第一个查询(循环中)中,我获得了 Work codew 的代码,并在第二个查询中使用它来获取名称。

这是代码,没有错误。

第一个查询获取行,但第二个查询未执行。

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 代码不执行。 提前致谢。 此致, 阿里

最佳答案

首先你应该使用PreparedStatement带有sql参数“?”防止Sql注入(inject)。

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

这应该是:

 String name = res2.getString("name"); //not res
 String lname = res2.getString("lname"); //not res

第三,您应该添加一个 finally{} block 并关闭连接。

关于java - 嵌套 SELECT 查询 Java + MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5428291/

相关文章:

mysql - 根据每天的最大值组连接表

php和mysql使用日期范围无法显示

mysql - SQL Group int 按组和按日期

MySQL 在同一个表上使用不同 WHERE 子句进行多个 SELECT 查询

java - 发送类型复杂的 Soap 错误 org.xmlpull.v1.XmlPullParserException : expected: START_TAG

java - 泛型错误 : duplicate type parameter

java - 无法使用 Singleton 类在 IntelliJ IDEA 中的属性文件中使用访问属性

java - JavaSound API Sequencer接口(interface)

mysql - 子查询销售和库存

mysql SELECT IF 语句与 OR