Program Optimization
Hi,
I am developing HTML dynamically using looping over result set 2 times and using 2 sql query.
I want to get the same result using 1 sql query or any other way like using arraylist etc
Following is the sql and jsp code.
Code:
CREATE TABLE "SYSTEM"."JSON_DATA"
(
"ID" NUMBER NOT NULL ENABLE,
"PARENTID" NUMBER,
"TITLE" VARCHAR2(255 BYTE),
"HAS_CHILD" NUMBER
)
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (1,-1,'Home',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (2,-1,'Menu2',1);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (3,2,'Menu2 Child1',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (4,2,'Menu2 Child2',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (5,2,'Menu2 Child3',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (6,2,'Menu2 Child4',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (7,2,'Menu2 Child5',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (8,2,'Menu2 Child6',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (9,2,'Menu2 Child7',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (10,2,'Menu2 Child8',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (11,2,'Menu2 Child9',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (12,-1,'Menu3',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (13,12,'????? ???? ??????????',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (14,12,'????? ???? ???????',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (15,12,'?????? ??????',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (16,12,'???????? ?????????',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (17,-1,'Menu4',1);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (18,17,'???? ??????? ? ???? ??????',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (19,17,'???? ???????? ??????',0);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (20,-1,'Menu5',1);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (25,-1,'Menu6',1);
Insert into JSON_DATA (ID,PARENTID,TITLE,HAS_CHILD) values (29,-1,'Menu7',1);
Code:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.Random.*"%>
<%@include file="connection.jsp" %>
<%
String data = "";
int id=2;
int parentid=0;
String title="";
int has_child=0;
String str="";
String supp="";
try
{
PreparedStatement stat= conn.prepareStatement("SELECT ID,PARENTID,TITLE,HAS_CHILD FROM JSON_DATA ORDER BY ID DESC");
rs = stat.executeQuery();
str = "";
int ObjectID=0;
while(rs.next())
{
supp = "";
id = rs.getInt(1);
parentid = rs.getInt(2);
title = rs.getString(3);
has_child = rs.getInt(4);
if (parentid == -1)
{
if(has_child==0)
{
str += "<li><a href='#'>"+title+"</a></li>";
}
if(has_child==1)
{
str += "<li><a href='#'>"+title+"</a>";
str += "<ul>";
try
{
PreparedStatement stat2= conn.prepareStatement("SELECT TITLE FROM JSON_DATA WHERE PARENTID="+id+" ORDER BY ID ");
rs2 = stat2.executeQuery();
while(rs2.next())
{
str += "<li><a href='#'>"+rs2.getString(1)+"</a></li>";
}
}
catch(Exception E)
{
out.println("Error "+E);
}
str += "</ul>";
str += "</li>";
}
}
}
}
catch(Exception E)
{
out.println("Error "+E);
}
finally
{
//rs.close();
//conn.close();
}
out.print(str);
%>
Any idea how to achieve this?
- Thanks
Zohaib.
|