重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
sqlserver查詢樹形結構的所有子節點
創新互聯是一家集網站建設,雷山企業網站建設,雷山品牌網站建設,網站定制,雷山網站建設報價,網絡營銷,網絡優化,雷山網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
用標準sql的with實現遞歸查詢(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數據庫讀取數據,并填充到樹形結構菜單并展現出來的實現方法:
1、引入jquery.treeview.js樹控件
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頁面中獲取后臺mysql數據,并傳到jsp頁面來
%?
// 數據庫的名字
String dbName = "zap";
// 登錄數據庫的用戶名
String username = "sa";
// 登錄數據庫的密碼
String password = "123";
// 數據庫的IP地址,本機可以用 localhost 或者 127.0.0.1
String host = "127.0.0.1";
// 數據庫的端口,一般不會修改,默認為1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//聲明需要使用的資源?
// 數據庫連接,記得用完了一定要關閉
Connection con = null;
// Statement 記得用完了一定要關閉
Statement stmt = null;
// 結果集,記得用完了一定要關閉
ResultSet rs = null;
try {
// 注冊驅動?
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 獲得一個數據庫連接
con = DriverManager.getConnection(connectionUrl);
String SQL = "SELECT * from note";
// 創建查詢
stmt = con.createStatement();
// 執行查詢,拿到結果集
rs = stmt.executeQuery(SQL);
while (rs.next()) {
%
tr
3、填充樹形菜單:
{
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遞推查詢,可以直接查詢出來。
參考資料:
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語句還需要自己驗證一下,上面的自己看著亂寫的。