SOS,写一个树,要求连接数据库,怎么写呢,都弄半个月了,再搞不出来就只好辞职了 SOS,写一个树,要求连接数据库,怎么写呢,都弄半个月了,再搞不出来就只好辞职了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 树就用dtree就行了。数据库操作不是很麻烦吧!select而已,记得上下级的关系。辞职?如果你上了班,还不会树,你应该引咎辞职。 树的例子到处都是,csdn下载区就有,大部分都是javascript写的,很好理解.说白了就是把数据放入数组再连字符串再打印 什么树?Swing的还是JS的?“要求连接数据库”是啥意思,是不是指树结构保存到数据库里?说清楚一点嘛 哈哈,竹子太恨了吧,人家也要吃饭啊按照竹子说的用dtree可以了,也容易掌握如果节点太大推荐你用动态树,可以用xloadtree,也容易掌握,网上有很多例子,照着改一下就可以了 这有个例子http://blog.csdn.net/j2ee_fan/archive/2008/03/28/2224346.aspx 经常来CSDN看看,发发贴,记得要结帖。 class ClientTreeReader { private StringBuffer sbTree = new StringBuffer(); /** * 取得数据 * @return 树节点的字符串 */ String read() { Connection conn = null; try { conn = DB.getConnection(); read(conn, 0, 0); }catch(SQLException e) { e.printStackTrace(); }finally { DB.close(conn); } return sbTree.toString(); }/** * 递归读取树 * * 第四步,采用<div>生成树 * @param conn * @param id * @param level 控制层次 * @throws SQLException */ private void read(Connection conn, int id, int level) throws SQLException { level++; String sql = "select * from t_client where pid=?"; PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, id); rs = pstmt.executeQuery(); while (rs.next()) { sbTree.append("<div>"); sbTree.append("\n"); for (int i=0; i<level-1; i++) { sbTree.append("<img src=\"../images/white.gif\">"); } if ("N".equals(rs.getString("is_leaf"))) { sbTree.append("<img alt=\"展开\" style=\"cursor:hand;\" onClick=\"display('" + rs.getInt("id") + "');\" id=\"img" + rs.getInt("id") + "\" src=\"../images/plus.gif\">"); sbTree.append("\n"); sbTree.append("<img id=\"im" + rs.getInt("id") + "\" src=\"../images/closedfold.gif\">"); sbTree.append("\n"); sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>"); sbTree.append("\n"); sbTree.append("<div style=\"display:none;\" id=\"div" + rs.getInt("id") + "\">"); sbTree.append("\n"); read(conn, rs.getInt("id"), level); sbTree.append("</div>"); }else { sbTree.append("<img src=\"../images/minus.gif\">"); sbTree.append("\n"); sbTree.append("<img src=\"../images/openfold.gif\">"); if ("Y".equals(rs.getString("is_client"))) { sbTree.append("<a href=\"client_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>"); }else { sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>"); } sbTree.append("\n"); } sbTree.append("</div>"); } }finally { DB.close(rs); DB.close(pstmt); } } } 设计数据库的时候,要有一个字段是父id(pid),还要设计一个字段“is_leaf”每个节点不仅有自己的id,还要有父id(pid)当A节点的pid等于B节点的id,说明A是B的叶子is_leaf字段有两个值,N代表节点下面还有子节点(叶子),Y代表节点下面没有子节点closedfold.gif是文件夹关闭的图标openfold.gif是文件夹打开的图标white.gif是空白的图标minus.gif是减号的图标plus.gif是加号的图标 http://download.csdn.net/source/574520这个 你去下载吧..看看怎么实现的 我也在用VC++做一个三层的动态树,树的节点是从ACCESS数据中取得,请问各位高手,指点一下吧 哪位大侠帮帮我啊?郁闷多时了!求好心人,谢谢! Extjs stroe更新问题 如何将一个cvs中的项目导入到一个现有的项目中? proxool连接池内存泄露? 做一个复选框选中后,点击分页,回来还选中的功能 struts2 延迟加载与一般加载的区别? 关于<html:link>标签在URI后面传参数的问题 Tomcat5.0+JDK1.4.0+Win2003配置问题!!急!1 关于cookie 和 session 一起使用出现的登陆问题? 大侠帮忙了。 wsdl无法解析 struts2 中不同名称空间 的action不能相互调用
辞职?如果你上了班,还不会树,你应该引咎辞职。
哈哈,竹子太恨了吧,人家也要吃饭啊按照竹子说的用dtree可以了,也容易掌握如果节点太大推荐你用动态树,可以用xloadtree,也容易掌握,网上有很多例子,照着改一下就可以了
http://blog.csdn.net/j2ee_fan/archive/2008/03/28/2224346.aspx
class ClientTreeReader {
private StringBuffer sbTree = new StringBuffer();
/**
* 取得数据
* @return 树节点的字符串
*/
String read() {
Connection conn = null;
try {
conn = DB.getConnection();
read(conn, 0, 0);
}catch(SQLException e) {
e.printStackTrace();
}finally {
DB.close(conn);
}
return sbTree.toString();
}
/**
* 递归读取树
*
* 第四步,采用<div>生成树
* @param conn
* @param id
* @param level 控制层次
* @throws SQLException
*/
private void read(Connection conn, int id, int level)
throws SQLException {
level++;
String sql = "select * from t_client where pid=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while (rs.next()) {
sbTree.append("<div>");
sbTree.append("\n");
for (int i=0; i<level-1; i++) {
sbTree.append("<img src=\"../images/white.gif\">");
}
if ("N".equals(rs.getString("is_leaf"))) {
sbTree.append("<img alt=\"展开\" style=\"cursor:hand;\" onClick=\"display('" + rs.getInt("id") + "');\" id=\"img" + rs.getInt("id") + "\" src=\"../images/plus.gif\">");
sbTree.append("\n");
sbTree.append("<img id=\"im" + rs.getInt("id") + "\" src=\"../images/closedfold.gif\">");
sbTree.append("\n");
sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");
sbTree.append("\n");
sbTree.append("<div style=\"display:none;\" id=\"div" + rs.getInt("id") + "\">");
sbTree.append("\n");
read(conn, rs.getInt("id"), level);
sbTree.append("</div>");
}else {
sbTree.append("<img src=\"../images/minus.gif\">");
sbTree.append("\n");
sbTree.append("<img src=\"../images/openfold.gif\">");
if ("Y".equals(rs.getString("is_client"))) {
sbTree.append("<a href=\"client_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");
}else {
sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");
}
sbTree.append("\n");
}
sbTree.append("</div>");
}
}finally {
DB.close(rs);
DB.close(pstmt);
}
}
}
每个节点不仅有自己的id,还要有父id(pid)
当A节点的pid等于B节点的id,说明A是B的叶子
is_leaf字段有两个值,N代表节点下面还有子节点(叶子),Y代表节点下面没有子节点closedfold.gif是文件夹关闭的图标
openfold.gif是文件夹打开的图标
white.gif是空白的图标
minus.gif是减号的图标
plus.gif是加号的图标
这个 你去下载吧..看看怎么实现的