树形结构的实现

本例采用Access做为实例,所有还有很多要改进的地方。 
请读者自已改进 

package product; 
import java.sql.*; 
public class ConnectDB{ 
String strDBDriver="sun.jdbc.odbc.JdbcOdbcDriver"; 
String strConnstr="jdbc:odbc:product"; 
Connection conn=null; 
ResultSet rs=null; 
Statement stmt=null; 
// Statement stmt=null; 
//构造函数 
public ConnectDB(){ 
try{ 
Class.forName(strDBDriver); conn=DriverManager.getConnection(strConnstr); 
stmt=conn.createStatement(); 

catch(Exception e){ 
System.out.println(e); 



public ResultSet execute(String sql){ 
rs=null; 
try{ 

rs=stmt.executeQuery(sql); 

catch(SQLException e){ 
System.out.println(e.getMessage()); 

return rs; 


public Connection getConnection(){ 
return conn; 


public boolean close(){ 
try{ 
if(this.rs!=null){ 
this.rs.close(); 

if(stmt!=null){ 
this.stmt.close(); 

if(conn!=null){ 
this.conn.close(); 

return true; 
}catch(Exception err){ 
return false; 




//======================================= 
package product; 
import java.sql.*; 
public class catalog 

ConnectDB conn=new ConnectDB(); 
String str=null; 
String sql=null; 
ResultSet rs=null; 
String AncestorID,LinkStr; 

public String getCatalog(){ 

str="<select name="FatherID" class="p9">
"+ 
"<option value="-1" selected>请选择父类</option>
"; 
String sql=null; 
sql="select * from catalog order by AncestorID,Linkstr"; 
ResultSet rs=conn.execute(sql); 
try{ 
while (rs.next()) { 
str=str+"<option value="+rs.getString("Productid")+">"; 
int nbspCount=rs.getString("LinkStr").length()-1; 
for(int i=0;i<nbspCount;i++){ 
str=str+"&nbsp;"; 

if(nbspCount>0) 
str=str+"┠"+rs.getString("title")+"</option>
"; 
else 
str=str+rs.getString("title")+"</option>
"; 


str=str+"</select>"; 
rs.close(); 

catch(SQLException e){ 
System.out.println(e.getMessage()); 

return str; 

public void setCatalog(String CatalogName,String FatherID){ 
int ChildNum=0; 
if(FatherID.compareTo("-1")!=0){ 
sql="select AncestorID,ChildNum,linkstr from catalog where productid="+FatherID; 
//out.println(sql); 
try{ 
rs=conn.execute(sql); 
if(rs.next()){ 
AncestorID=rs.getString("AncestorID"); 
ChildNum=rs.getInt("ChildNum"); 
LinkStr=rs.getString("linkstr"); 

else{ 
AncestorID=""; 
LinkStr="1"; 
ChildNum=0; 

LinkStr=LinkStr+(ChildNum+1); 
//out.println(AncestorID+":"+LinkStr+":"+ChildNum); 
sql="insert into catalog(title,fatherID,AncestorID,LinkStr) values(""+CatalogName+"",""+FatherID+"",""+AncestorID+"",""+LinkStr+"")"; 
//out.println(sql); 
conn.execute(sql); 
sql="update catalog set childNum="+(ChildNum+1)+" where productID="+FatherID; 
//out.println("<br>"+sql); 
conn.execute(sql); 
}catch(Exception e){ 
System.out.println(e); 


}else{ 
sql="insert into catalog(title,fatherID,LinkStr) values(""+CatalogName+"",""+FatherID+"","1")"; 
//out.println(sql); 
try{ 
conn.execute(sql); 
sql="select top 1 productID from catalog order by productID desc "; 
rs=conn.execute(sql); 
if(rs.next()){ 
AncestorID=rs.getString("productID"); 

else{ 
AncestorID=""; 

rs.close(); 
sql="update catalog set AncestorID=""+AncestorID+"" where productID="+AncestorID; 
//out.println(sql); 
conn.execute(sql); 
}catch(Exception e){ 
System.out.println(e); 



}//end if 

if(rs!=null){ 
try{ 
rs.close(); 
}catch(Exception e){ 
System.out.println(e); 





public void deleteCatalog(String FatherID){ 
int tempData=0; 
sql="select fatherID,linkstr,AncestorID from catalog where productID="+FatherID; 
rs=conn.execute(sql); 
try{ 
if(rs.next()){ 
tempData=rs.getInt("fatherID"); 
LinkStr=rs.getString("linkstr"); 
AncestorID=rs.getString("AncestorID"); 


try{rs.close();} 
catch(Exception e){ 
System.out.println(e); 

sql="delete from catalog where ProductID="+FatherID; 
// out.println(sql); 
try{ 
conn.execute(sql); 
}catch(Exception e){ 
System.out.println(e); 

sql="delete from catalog where linkstr like ""+LinkStr+"%" and AncestorID="+AncestorID; 
//out.println(sql); 
try{ 
conn.execute(sql); 
}catch(Exception e){ 
System.out.println(e); 

sql="update catalog set ChildNum=ChildNum-1 where productID="+tempData; 
//out.println(sql); 
try{ 
conn.execute(sql); 
}catch(Exception e){ 
System.out.println(e); 

}catch(Exception e){ 
System.out.println(e); 

} //end public 

public void updateCatalog(int id){ 



public String getCatalog(int id){ 

str="<select name="FatherID" class="p9">
"+ 
"<option value="-1" >请选择父类</option>
"; 
String sql=null; 
sql="select * from catalog order by AncestorID,Linkstr"; 
ResultSet rs=conn.execute(sql); 
try{ 
while (rs.next()) { 
int ProductID=rs.getInt("productID"); 
if (ProductID==id) { 
str=str+"<option value="+ProductID+" selected>"; 

else{ 
str=str+"<option value="+ProductID+">"; 

int nbspCount=rs.getString("LinkStr").length()-1; 
for(int i=0;i<nbspCount;i++){ 
str=str+"&nbsp;"; 

if(nbspCount>0) 
str=str+"┠"+rs.getString("title")+"</option>
"; 
else 
str=str+rs.getString("title")+"</option>
"; 


str=str+"</select>"; 
rs.close(); 

catch(SQLException e){ 
System.out.println(e.getMessage()); 

return str; 


public String getCatalogList(){ 

str="<select name="FatherID" class="p9" size="20" onClick="MM_jumpMenu("parent.mainFrame",this,0)">
"+ 
"<option value="-1" selected>请选择父类</option>
"; 
String sql=null; 
sql="select * from catalog order by AncestorID,Linkstr"; 
ResultSet rs=conn.execute(sql); 
try{ 
while (rs.next()) { 
str=str+"<option value="+rs.getString("Productid")+">"; 
int nbspCount=rs.getString("LinkStr").length()-1; 
for(int i=0;i<nbspCount;i++){ 
str=str+"&nbsp;"; 

if(nbspCount>0) 
str=str+"┠"+rs.getString("title").trim()+"</option>
"; 
else 
str=str+rs.getString("title")+"</option>
"; 


str=str+"</select>"; 
rs.close(); 

catch(SQLException e){ 
System.out.println(e.getMessage()); 

return str; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值