📄 kylelist_linkonly.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
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://a:1433;DatabaseName=test";
String user="sa";
String password="sa";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
}
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="";
if (opened) rs.close();
rs=stmt.executeQuery(KyleSqlUtils.getQueryCountSql(table,"*","n",where).toString());
if (rs.next())
count=rs.getInt("n");
else
count=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=stmt.executeQuery(querySql.toString());
opened=true;
}
public boolean first() throws Exception
{
if (!opened) return false;
index=1;
return rs.first();
}
public boolean last() throws Exception
{
if (!opened) return false;
index=0;
return rs.last();
}
public boolean next() throws Exception
{
if (!opened) return false;
index++;
return rs.next();
}
public String value(String fieldstr) throws Exception
{
String s=fieldstr;
String[] ary = s.split("[.]");
if(ary.length==1) return rs.getString(fieldstr);
s = rs.getString(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);
Statement stmtTemp = conn.createStatement();
ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());
int idx=0;
while (rsTemp.next())
temptable.add(String.valueOf(idx++),rsTemp.getString(1));
rsTemp.close();
stmtTemp.close();
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();
ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());
while (rsTemp.next())
temptable.add(rsTemp.getString(1),rsTemp.getString(2));
rsTemp.close();
stmtTemp.close();
temptables.add(temptable);
//增加对象表
Class c = Class.forName("com.kyle.eobject."+fieldbef.getRefer());
KyleList obj = (KyleList)c.newInstance();
lists.addObj(uri,obj);
}
}
s=temptable.value(s);
}
return s;
}
private Connection conn;
private Statement stmt;
private ResultSet rs;
private boolean opened;
//Query SQL
KyleQuerySQL querySql = new KyleQuerySQL();
private String field="";
private String table="*";
private String where="";
private String orderby="";
private String key="";
private int count; //总记录数
private boolean page=false; //分页模式
private int pageSize=10; //每页记录数
private int pageCount=1; //总页数
private int pageNo=1; //当前页
public int index = 0; //记录指针位置
public KyleFields fields = new KyleFields();
private KyleLists lists = new KyleLists();
private KyleNameTables temptables = new KyleNameTables();
public static void main(String args[]) throws Exception
{
System.out.println("output data..........");
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 + -