我正在尝试从数据库获取数据。
我必须使用查询。
从第一个查询(循环中)中,我获得了 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/