⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kylelist.java

📁 创建中间企业对象层
💻 JAVA
字号:
/**
 * @author duke
 * @version 1.2
 * @date 2004-8-10 14:37
 */
 
package com.kyle.eobject;

import java.io.*;
import java.util.Date;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;


public class KyleList
{
	
	public KyleList() throws Exception
	{
		initializeFields();
		initializeLink();
		opened=false;
	}

	public KyleList(String name) throws Exception
	{
		setTableName(name);
		initializeFields();
		initializeLink();
		opened=false;
	}

	protected void initializeFields(){}
	
	//增加数据
	public void addField(String name, 
						 String type,
						 int length)
	{ 
		fields.addField(name,type,length,"","");
	}
	
	public void addField(String name, 
						 String type,
						 int length,
						 String refer,
						 String referfield)
	{
		fields.addField(name,type,length,refer,referfield);
	}

	private void initializeLink() throws Exception
	{
        //openConn();  //time 211
        //internalStatement = conn.createStatement(); //time 370   
	}
	
	private void openConn() throws Exception
	{
        //conn = DBUtils.getConnectionPool();
        //connOpened = true;
	}
	
	public void setTableName(String name)
	{
		table=name;
	}

	public String getTableName()
	{
		return table;
	}
	
	public void setWhere(String value)
	{
		if (value!=null) where= value.trim();
	}
	
	public String getWhere()
	{
		return where;
	}

	public void setField(String value)
	{
		field= value;
	}
	
	public String getField()
	{
		return field;
	}
	
	
	public void setKey(String value)
	{
		key=value;
	}
	
	public String getKey()
	{
		return key;
	}

	public int getCount()
	{
		return count;
	}

	public void setPage(boolean value)
	{
		page=value;
	}
	
	public void setPageSize(int value)
	{
		pageSize=value;
	}

	public int getPageNo()
	{
		return pageNo;
	}
	
	public int getPageCount()
	{
		return pageCount;
	}
	
	public void setPageNo(int value)
	{
		pageNo=value;
	}

	public void list() throws Exception
	{
		String sqlstr="";
		Connection conn = DBUtils.getConnection();
		Statement stam = conn.createStatement();
		ResultSet rs = stam.executeQuery(
				KyleSqlUtils.getQueryCountSql(table,"*","n",where).toString());
		if (rs.next())
			allCount=rs.getInt("n");
		else
			allCount=0;
		rs.close();
		
		
		

		//分页模式
		if (page)
		{
			pageCount=count/pageSize+1;
            if (pageNo<1) pageNo=1;
            if (pageNo>pageCount) pageNo=pageCount;
            querySql=KyleSqlUtils.getPageSql(table,field,where,orderby,
            								pageNo,pageSize,"ID",-1);
		}
		else
		{
			querySql=KyleSqlUtils.getQuerySql(table,field,where,orderby);
		}
		//System.out.println(querySql);

		rs = stam.executeQuery(querySql.toString());
		ResultSetMetaData rsmd = rs.getMetaData();
		int countOfColumns = rsmd.getColumnCount();
		while(rs.next())
		{
			KyleTableRecord record = new KyleTableRecord(dataTable);
			for(int i=1;i<=countOfColumns;i++)
			{
				String cname  = rsmd.getColumnName(i);
				String cvalue = rs.getString(i);
				record.add(cname,cvalue);
			}
			dataTable.addRecord(record);
			count++;
		}
		rs.close();
		stam.close();
		DBUtils.freeConnection(conn);
		opened=true;
		
	}

	public boolean next()
	{
		if(!opened) return false;
		if(index<-1 || index>=(count-1)) return false;
		index++;
		return true;
	}
	
	public String value(String fieldstr) throws Exception
	{
		if (!opened) return "";
		if(index<0 || index>=count) return "";
		KyleTableRecord record = dataTable.getRecord(index);

		String str=fieldstr;
		String[] ary = str.split("[.]");
		//if(ary.length==1) return internalRs.getString(fieldstr);
		if(ary.length==1) return record.value(fieldstr);
		
		//str = internalRs.getString(ary[0]);
		str = record.value(ary[0]);
		KyleQuerySQL sql = new KyleQuerySQL();
		String uri=ary[0];
		String uribef=uri;

		for(int i=0;i<ary.length;i++)
		{
			if(i>0)
			{
				uribef=uri;
				uri += "."+ary[i];
			}

			KyleNameTable temptable = temptables.getTable(uri);
			if(temptable==null)
			{				
				if(i==0)
				{
					//增加数据表			
					temptable = new KyleNameTable(uri);
					sql=KyleSqlUtils.getQuerySql(getTableName(),uri,querySql.where); //time 10 少
        			
        			//Statement stmtTemp = conn.createStatement();  //time 20
					//ResultSet rsTemp = stmtTemp.executeQuery(sql.toString()); //time 10 少
					
					Connection conn = DBUtils.getConnection();
					Statement stmtTemp = conn.createStatement();
					ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());
					int idx=0;
					while (rsTemp.next()) //time 0-10
						temptable.add(String.valueOf(idx++),rsTemp.getString(1));
					rsTemp.close();
					stmtTemp.close();
					DBUtils.freeConnection(conn);
					temptables.add(temptable);
					//增加对象表
					KyleField field = fields.getField(uri);
					Class c = Class.forName("com.kyle.eobject."+getTableName());
					lists.addObj(uri,(KyleList)c.newInstance());
				}
				if(i>0)
				{
					//得到指当前字段的Field
					KyleList objbef = lists.getObj(uribef);
					KyleField fieldbef = objbef.fields.getField(ary[i-1]);
					if (fieldbef==null) return "";
					KyleNameTable temptablebef = temptables.getTable(uribef);
					//增加数据表
					temptable = new KyleNameTable(uri);
					sql=KyleSqlUtils.getQuerySql(
							fieldbef.getRefer(),
							fieldbef.getReferfield()+","+ary[i],
							fieldbef.getReferfield()+" IN "+temptablebef.getWhereInStr());


        			//Statement stmtTemp = conn.createStatement(); //time 10
					//ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());
					Connection conn = DBUtils.getConnection();
					Statement stmtTemp = conn.createStatement();
					ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());
					
					while (rsTemp.next())  //time 10
						temptable.add(rsTemp.getString(1),rsTemp.getString(2));
					rsTemp.close();
					stmtTemp.close();
					DBUtils.freeConnection(conn);
					temptables.add(temptable);
					//增加对象表
					Class c = Class.forName("com.kyle.eobject."+fieldbef.getRefer());
					KyleList obj = (KyleList)c.newInstance();
					lists.addObj(uri,obj);
				}
			}
			str=temptable.value(str);		
		}
		return str;
	}
	
	public void close() throws Exception
	{
	}

	//Query SQL
	KyleQuerySQL querySql = new KyleQuerySQL();
	private String field="";
	private String table="*";
	private String where="";
	private String orderby="";
	private String key="";
	
	private int allCount=0;        //总记录数
	private int count=0;		   //记录数
	private boolean page=false;    //分页模式
	private int pageSize=10;       //每页记录数
	private int pageCount=1;       //总页数
	private int pageNo=1;          //当前页
	public int index = -1;		   //记录指针位置


	private boolean opened=false;
	private boolean connOpened=false;
	private KyleFields fields = new KyleFields();
	private KyleLists  lists  = new KyleLists();
	private KyleNameTables temptables = new KyleNameTables();
	
	private KyleTable dataTable = new KyleTable();
	
	public static void main(String args[]) throws Exception
	{
		System.out.println("id		a		b");
		System.out.println("------------------------------------");
		KyleList t = new KyleList("users");
		t.setWhere("id>1 and a like '%a%' ");
		t.setField("id,a,b");
		t.setPage(true);
		t.setPageNo(1);
		t.list();
		while (t.next())
			System.out.println(t.index + "," + 
							   t.value("id") +
							   "		"+t.value("a")+
							   "		"+t.value("b"));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -