sqlserver查詢樹(shù)形結(jié)構(gòu)的所有子節(jié)點(diǎn)
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),雷山企業(yè)網(wǎng)站建設(shè),雷山品牌網(wǎng)站建設(shè),網(wǎng)站定制,雷山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,雷山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
用標(biāo)準(zhǔn)sql的with實(shí)現(xiàn)遞歸查詢(sql2005以上肯定支持,sql2000不清楚是否支持):
with subqry(id,name,pid) as (
select id,name,pid from test1 where id = 5
union all
select test1.id,test1.name,test1.pid from test1,subqry
where test1.pid = subqry.id
)
select * from subqry;
jsp從mysql數(shù)據(jù)庫(kù)讀取數(shù)據(jù),并填充到樹(shù)形結(jié)構(gòu)菜單并展現(xiàn)出來(lái)的實(shí)現(xiàn)方法:
1、引入jquery.treeview.js樹(shù)控件
script type="text/javascript" src="jquery/easyui/jquery.min.js"/script
script type="text/javascript" src="jquery/easyui/jquery.easyui.min.js"/script
2、jsp頁(yè)面中獲取后臺(tái)mysql數(shù)據(jù),并傳到j(luò)sp頁(yè)面來(lái)
%?
// 數(shù)據(jù)庫(kù)的名字
String dbName = "zap";
// 登錄數(shù)據(jù)庫(kù)的用戶名
String username = "sa";
// 登錄數(shù)據(jù)庫(kù)的密碼
String password = "123";
// 數(shù)據(jù)庫(kù)的IP地址,本機(jī)可以用 localhost 或者 127.0.0.1
String host = "127.0.0.1";
// 數(shù)據(jù)庫(kù)的端口,一般不會(huì)修改,默認(rèn)為1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//聲明需要使用的資源?
// 數(shù)據(jù)庫(kù)連接,記得用完了一定要關(guān)閉
Connection con = null;
// Statement 記得用完了一定要關(guān)閉
Statement stmt = null;
// 結(jié)果集,記得用完了一定要關(guān)閉
ResultSet rs = null;
try {
// 注冊(cè)驅(qū)動(dòng)?
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 獲得一個(gè)數(shù)據(jù)庫(kù)連接
con = DriverManager.getConnection(connectionUrl);
String SQL = "SELECT * from note";
// 創(chuàng)建查詢
stmt = con.createStatement();
// 執(zhí)行查詢,拿到結(jié)果集
rs = stmt.executeQuery(SQL);
while (rs.next()) {
%
tr
3、填充樹(shù)形菜單:
{
id ? ? ? ? ?: "string" // will be autogenerated if omitted
text ? ? ? ?: "string" // node text
icon ? ? ? ?: "string" // string for custom
state ? ? ? : {
opened ? ?: boolean ?// is the node open
disabled ?: boolean ?// is the node disabled
selected ?: boolean ?// is the node selected
},
children ? ?: [] ?// array of strings or objects
li_attr ? ? : {} ?// attributes for the generated LI node
a_attr ? ? ?: {} ?// attributes for the generated A node
}
$('#tree').jstree({
'core' : {
? ?'data' : function (obj, cb) {
? ? ? ?cb.call(this,
? ? ? ? ?['Root 1', 'Root 2']);
? ?}
}});
使用sqlserver遞推查詢,可以直接查詢出來(lái)。
參考資料:
WITH lmenu(nav_id,nav_name,nav_parentid,level) as
(
SELECT nav_id,nav_name,nav_parentid,0 level FROM nav nav_parentid=0
UNION ALL
SELECT A.nav_id, A.nav_name,a.nav_parentid, b.level+1 FROM gs_nav A,lmenu b where a.nav_parentid= b.nav_id and nav_id = 10
)
SELECT * from lmenu
具體SQL語(yǔ)句還需要自己驗(yàn)證一下,上面的自己看著亂寫(xiě)的。