import java.sql.*; public class ArticleTree { public static void main(String[] args) { new ArticleTree().show(); } private void show(){ Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager .getConnection("jdbc:mysql://localhost/bbs?user=root&password=root"); stmt = conn.createStatement(); rs = stmt.executeQuery("select * from article where pid=0"); while(rs.next()){ System.out.println(rs.getString("cont")); tree(conn,rs.getInt("id"),1); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null){ conn.close(); conn = null; } if (stmt != null){ stmt.close(); stmt = null; } if (rs != null){ rs.close(); rs = null; } } catch (SQLException e) { e.printStackTrace(); } } } private void tree(Connection conn,int id,int level) { Statement stmt = null; ResultSet rs = null; String str = "select * from article where pid ="; StringBuffer sbPre = new StringBuffer(""); for(int i=0;i<level; i++){ sbPre.append(" "); } try { stmt = conn.createStatement(); rs = stmt.executeQuery(str + id); while(rs.next()){ System.out.println(sbPre + rs.getString("cont")); if(rs.getInt("isleaf") != 0){ tree(conn,rs.getInt("id"),level+1); } } } catch (SQLException e) { e.printStackTrace(); } finally { try { if(rs != null) { rs.close(); rs = null; } if(stmt != null) { stmt.close(); stmt = null; } } catch (SQLException e) { e.printStackTrace(); } } } }
下图是article这张表的数据和结构:
下图是程序执行的输出结果: