100
node_id varchar2(50), //节点代码
parent_id varchar2(50), //父节点代码
node_name varchar2(30), //节点名称
isnt_avile varchar2(2), //是否有效
remark varchar2(100), //备注
利用这个表。。
怎么用递归查询出来啊?
很急。。。
[解决办法]
一条sql的话,要根据数据库不同来处理,比如db2用with
在程序中处理的话,就容易很多了,用循环就可以完成了。
[解决办法]
额。。我就是要通过程序来循环。。。可就是不知道怎么循环。。各位帮帮手吧。。
从我这个表中用程序代码来 查询出来!~
具体代码啊。。谢谢
[解决办法]
把数据例子说出来看看
[解决办法]
关注
[解决办法]
要查什么
[解决办法]
node_id //节点代码 parent_id //父节点代码 node_name varchar2(30)
1 -1 中国
2 1 湖南省
3 1 广东省
4 2 长沙市
5 4 五一路
6 2 浏阳
7 5 五一广场
8 3 广州
用程序查出来的表现形式是:
中国
湖南省
长沙市
五一路
五一广场
浏阳
广东省
广州
[解决办法]
天啊。。UP
[解决办法]
頂啊。
[解决办法]
谁能告诉我啊。
[解决办法]
String id=request.getParameter( "id ");
sql= "select * from table while parentid= "+id;//查询子节点
[解决办法]
顶
[解决办法]
汗。我是要全部展现。。通过一个循环全部展现出来,不是要展示某一条数据
[解决办法]
真的没人帮忙么?
[解决办法]
用dtree的话倒是容易实现上面所说的
[解决办法]
最好加一个 子节点个数
第一次读取parentid为0的记录
判断 如果子节点个数不为零
允许有onClick();//用于读取 parentid为该记录id的子节点
写个函数 根据 select * from table while parentid= "+id;//查询子节点
并把该记录集返回 并打印到页面
当onClick()被触发然后就调用 读取记录的动作(.jsp or servlet);可以用ajax触发查找子节点的函数
(查询数据库并返回的部分可以写到 servlet里 也可以用 struts的action)
不知道说清楚没
大概就是这个思路
最好不要一次把记录集都查找出来
[解决办法]
谢谢了。。。
[解决办法]
我写的很相似的一段代码,可以参考
package mypackage;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import java.util.List;
import javax.swing.tree.*;
import javax.swing.table.*;
public class ClassBrowse
{
public static void main(String[] args) throws Exception
{
new MyFrame();
}
}
class MyFrame extends JFrame
{
public MyFrame()
{
setSize(500, 500);
setResizable(false);
setTitle( "ShowStudentInfomation ");
setLayout(null);
JScrollPane treePanel = TreePanel.getScrollPanel();
JScrollPane showPanel = ShowStudentPanel.getScrollPanel();
treePanel.setBounds(0, 0, 100, 500);
showPanel.setBounds(100, 0, 400, 500);
Container contentPane = getContentPane();
contentPane.add(treePanel);
contentPane.add(showPanel);
this.setVisible(true);
}
}
class TreePanel
{
public static JScrollPane getScrollPanel()
{
try
{
ConnectDB m = ConnectDB.getInstance();
DefaultMutableTreeNode root = m.getRootOrg();
m.selectSonNode(root);
JTree tree = new JTree(root);
panel = new JScrollPane(tree);
}
catch(Exception e)
{
panel = new JScrollPane();
System.out.println(e);
}
return panel;
}
private static JScrollPane panel;
}
class ShowStudentPanel extends JScrollPane
{
public static JScrollPane getScrollPanel()
{
getTable( "111 ");
return new JScrollPane(table);
}
public static JTable getTable(String classId)
{
//classId = "111 ";
try
{
String[][] array = ConnectDB.getInstance().selectStudentByClassId(classId);
String[] names = { "学号 ", "姓名 ", "性别 ", "出生日期 ", "电子邮件 "};
for(int i = 0; i < array.length; i++)
{
for(int j = 0; j < array[i].length; j++)
{
System.out.println(array[i][j]);
}
}
table = new JTable(array, names);
}
catch(Exception e)
{
System.out.println(e);
}
return table;
}
private static JTable table;
}
class ConnectDB
{
public static ConnectDB getInstance()
{
return new ConnectDB();
}
private ConnectDB()
{
list = new ArrayList();
}
public Connection getConnection()
{
try
{
Class.forName(driverClass);
con=DriverManager.getConnection(URL);
}
catch(Exception e)
{
System.out.println(e);
}
return con;
}
public void close()
{
try
{
if(set != null)
{
set.close();
}
if(st != null)
{
st.close();
}
if(con != null)
{
con.close();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public void selectStudentByStudentId(String studentId) throws Exception
{
getConnection();
st = con.prepareStatement(sql1);
st.setString(1, studentId);
set = st.executeQuery();
while(set.next())
{
System.out.println(set.getString(1));
}
close();
}
public String[][] selectStudentByClassId(String classId) throws Exception
{
getConnection();
st = con.prepareStatement(sql2, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
st.setString(1, classId);
set = st.executeQuery();
set.last();
int maxRowNum = set.getRow();
String[][] array = new String[maxRowNum][5];
int row = 0;
int i = 0;
set.beforeFirst();
while(set.next())
{
for(i = 1; i <= 5; i++)
{
array[row][i - 1] = set.getString(i);
System.out.println(array[row][i - 1]);
}
row++;
}
close();
return array;
}
public void selectSonNode(DefaultMutableTreeNode root) throws Exception
{
getConnection();
selectSonOrg(root, "100 ");
try
{
if(st != null)
{
st.close();
}
if(con != null)
{
con.close();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
private void selectSonOrg(DefaultMutableTreeNode root, String id) throws Exception
{
String orgName = " ";
st = con.prepareStatement(sql4);
st.setString(1, id);
ResultSet set = st.executeQuery();
while(set.next())
{
id = set.getString(1);
orgName = set.getString(2);
DefaultMutableTreeNode node = new DefaultMutableTreeNode(orgName);
root.add(node);
System.out.println(node);
selectSonOrg(node, id);
}
set.close();
}
public DefaultMutableTreeNode getRootOrg() throws Exception
{
String id = " ";
String orgName = " ";
DefaultMutableTreeNode root = null;
getConnection();
st = con.prepareStatement(sql3);
set = st.executeQuery();
while(set.next())
{
id = set.getString(1);
orgName = set.getString(2);
root = new DefaultMutableTreeNode(orgName);
}
close();
return root;
}
private Connection con;
private PreparedStatement st;
private ResultSet set;
private List list;
public final String driverClass = "sun.jdbc.odbc.JdbcOdbcDriver ";
public final String URL = "jdbc:odbc:mydb ";
public final String userName = " ";
public final String password = " ";
public final String sql1 = "select id, name, sex, birthday, email from student where id = ? ";
public final String sql2 = "select id, name, sex, birthday, email from student where classid = ? ";
public final String sql3 = "select id, orgName, parent from org where parent is null ";
public final String sql4 = "select id, orgName, parent from org where parent = ? ";
}