我提方—案你自己解决: 1: 先用select parentID form 表名 group by parentID ,将结果数据放入一维数组中KeyN[],这样不会出现根目录重复. 2: 用循环;分别用select name from 表名 where KeyN[i] ,将结果数据放入一维数组或ArrayList对象中,(最好将其放入ArrayList对象,并且将它定义成临时变量.) 每次取出结果集后都将他们以"键值对"的方式put(KeyN[i],ArrayListObj)到HashTable对象中.返回HashTable对象 4: 在调用函数的地方,用HashTableObj对象的keys() for (Enumeration e=HashTableObj.keys();e.hasMoreElements();){ String parentK=e.nextElement().toString();//根目录 ArrayList ChildListObj=(ArrayList)HashTableObj.get(parentK);//根目录下的子目录 //再做对应的输出即可.ChildListObj用迭代输出. }
首先你要访问数据库,得到一个结果集 再定义一个二维数组 然后用结果集的方法,如下移结果集指针、getString(1)等等,分别定位以及取得第一列的值 开始赋值 for //这个是分行 for 这个处理每一行的
分别用select name from 表名 where KeyN[i] ==>麻烦兄弟,问一下,这个SQL怎么写?低手,不好意思 另外,hui_bing()兄弟,能否再详细一些呢,虽然你已经声明不喜欢敲代码,可是 我实在理解能力太差,能否麻烦些再详细些呢,不是因为自己偷懒,而是真的不懂 请教大家了
用 sqlstr="select name from 表名 where "+KeyN[i]
不好意思,有点马大哈了! sqlstr="select name from 表名 where parentID='"+KeyN[i]+"'"
{
int j=0;
while(rs.next())
{
j++;
}
Pet[] pets= new Pet[j];
rs.beforeFirst();
int i=0;
while (rs.next())
{
pets[i]=new Pet();
pets[i].setPetId(rs.getString(2));
pets[i].setPetName(rs.getString(3));
pets[i].setPetType(rs.getString(4));
pets[i].setPetAge(rs.getInt(5));
pets[i].setInDate(rs.getDate(6));
pets[i].setOutDate(rs.getDate(7));
pets[i++].setManagerName(rs.getString(8));
}
return pets;
}
public Pet[] getAllPets() throws IOException, SQLException,
ClassNotFoundException
{
String sql = "select *from petsinfo";
Connection conn = DBConn.getConnection();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
Pet[] pets = getResSet(rs);
st.close();
conn.close();
return pets;
}
我数据库结构(其实就好像是网页目录分类一样)
id,parentID,nameparentID为0则表示是根目录然后我要从这个数据库里把这些数据读出来,像http://dir.google.com/这样列出来
请楼上兄弟帮忙,谢谢 !!!
DTO dto = (DTO) iterator.next(); arr[i][0] = dto.getLable();//label、name都是dto的属性,String类型的
arr[i][1] = dto.getName();
}
查了资料,好像用ARRAYLIST适合,大家有详细代码吗?
String result[][] = null;
Connection dbconn = null;
Statement stmt = null;
ResultSet rsResult = null;
String strSql = null;
StrCvs strTo = new StrCvs();
if(sql.length()==0 || fieldnum ==0){
result = null;
}
else
{
strSql = sql;
try
{
dbconn = DbOperation.getConnection();
stmt = dbconn.createStatement(1004, 1007);
//strSql ="select * from sysconfig where syscon_sign=0 order by syscon_explain";
System.out.println("sql:" +strTo.UnToGB(strSql));
rsResult = stmt.executeQuery(strSql);
System.out.println(strSql+"数据查询已完成!");
if(rsResult.next())
{
rsResult.absolute(-1);
int iRowNum = rsResult.getRow();
result = new String[iRowNum][fieldnum];
rsResult.first();
for(int i = 0; i < iRowNum; i++)
{
for(int j = 0;j<fieldnum;j++)
{
if(rsResult.getString(j+1)==null || rsResult.getString(j+1).length() == 0 || rsResult.getString(j+1).equals("null")){
result[i][j] = "";
}else{
//result[i][j] = strTo.UnToGB(rsResult.getString(j+1));
result[i][j] = rsResult.getString(j+1);
}
}
rsResult.next();
}
}
}
catch(Exception e)
{
result = null;
System.out.println(e.getMessage());
}
finally
{
if (rsResult!=null){
rsResult.close();
rsResult=null;
}
if (stmt!=null){
stmt.close();
stmt=null;
}
if (dbconn!=null){
dbconn.close();
dbconn=null;
}
}
}
return result;
}
另外网上又查了些资料,好像用arraylis最适合,然后用Iterator去读取,但都没例子,
求大家帮忙啊。格式
http://dir.google.com
http://dir.google.com这种网页目录的效果,请兄弟帮忙 啊
从数据库读出数据放在DATASET上,
再对DATASET循环,读出的数据就能放在数组上了..
参考:http://sunflowerbbs.oicp.net/posts/list/48.page
1: 先用select parentID form 表名 group by parentID ,将结果数据放入一维数组中KeyN[],这样不会出现根目录重复.
2: 用循环;分别用select name from 表名 where KeyN[i] ,将结果数据放入一维数组或ArrayList对象中,(最好将其放入ArrayList对象,并且将它定义成临时变量.)
每次取出结果集后都将他们以"键值对"的方式put(KeyN[i],ArrayListObj)到HashTable对象中.返回HashTable对象
4: 在调用函数的地方,用HashTableObj对象的keys()
for (Enumeration e=HashTableObj.keys();e.hasMoreElements();){
String parentK=e.nextElement().toString();//根目录
ArrayList ChildListObj=(ArrayList)HashTableObj.get(parentK);//根目录下的子目录
//再做对应的输出即可.ChildListObj用迭代输出.
}
再定义一个二维数组
然后用结果集的方法,如下移结果集指针、getString(1)等等,分别定位以及取得第一列的值
开始赋值
for //这个是分行 for 这个处理每一行的
==>麻烦兄弟,问一下,这个SQL怎么写?低手,不好意思
另外,hui_bing()兄弟,能否再详细一些呢,虽然你已经声明不喜欢敲代码,可是
我实在理解能力太差,能否麻烦些再详细些呢,不是因为自己偷懒,而是真的不懂
请教大家了
sqlstr="select name from 表名 where "+KeyN[i]
sqlstr="select name from 表名 where parentID='"+KeyN[i]+"'"
public HashTable GainRecod(Statement StaObj){
ResultSet rs=null;
int rowNum=0;
int index=0;
String ParentInfo[];
HashTable HashTableobj=new HashTable();
String sqlStr="select 根目录列名 form 表名 group by 根目录列名";
try{
rs=StaObj.executeQuery(sqlStr);
rs.beforeFirst();
while(rs.next()){
rowNum=rs.getRow();//获得记录集条数
}
if(rowNum==0){
JOptionPane.showMessageDialog(null,"对不起!本数据库中没有您要查找的数据!");
return null;
}
ParentInfo=new String[rowNum];
index=0;
rs.beforeFirst();
while(rs.next()){
ParentInfo[index]=rs.getString(1);//获得所有根目录,放入数组中
index++;
}
rs.close();
}catch(SQLException sqlE){
System.out.println(sqlE);
}
try{
for(i=0;i<rowNum;i++){
ArrayList ArrayListobj=new ArrayList();
sqlStr="select 子目录列名 from 表名 where 根目录列名='"+ParentInfo[i]+"'";
rs=StaObj.executeQuery(sqlStr);
rs.beforeFirst();
while(rs.next()){
//获得该根目录下的所有子目录,并放入ArrayList中
ArrayListobj.add(rs.getString(1));
}
//将根目录与子目录以”键之对“的方式放入HashTable对象中
HashTableobj.put(ParentInfo[i],ArrayListobj);
rs.close();
}
return HashTableobj;
}catch(SQLException sqlE){
System.out.println(sqlE);
}
return null;
}
public void transferMethod(){
try{
//StaObj是本类的Statement属性,在通过Connection对象取得它时要将其游标设为可上下移动的,具体参数见帮助。
HashTable HashTableobj=this.GainRecod(StaObj);
for (Enumeration e=HashTableObj.keys();e.hasMoreElements();){
String parentK=e.nextElement().toString();//根目录
ArrayList ChildListObj=(ArrayList)HashTableObj.get(parentK);//根目录下的子目录
Iteratior IteObj=ChildListObj.iteratior();
//再做对应的输出即可.ChildListObj用迭代输出.
System.out.println("根目录"+parentK+"下有:");
while(IteObj.hasNext()){
String ChildInfo=(IteObj.next()).toString();
System.out.print(ChildInfo+",");
}
System.out.println("");
}
}catch(Exception e){
System.out.println(e);
}
}