包含两个类文件
DataBase.java和ParentBean.java
DataBase.java 主要功能函数如下
//查询sql
public Result QuerySQL(String sql)
{
ResultSet rs=null;
try
{
pstm =conn.prepareStatement(sql);
rs= pstm.executeQuery();
}catch(SQLException sqle){
if(pstm!=null) pstm.close();
}
return rs;
}
//执行增、删、改的语句SQL
public int ExecuteSQL(String sql)
{
try
{
pstm =conn.prepareStatement(sql);
pstm.executeUpdate();
conn.commit();
}
catch(SQLException sqle)
{
return sqle.getErrorCode();
}
finally
{
pstm.close();
}
return 0;
}
DataBase分页操作函数
//分页操作函数
public Vector getOnePage(String sql,int page,int records)
{
/** 第一个为总页数
* 第二个为Hashtable
*/
Vector vect =new Vector();
try{
pstm = conn.prepareStatement(sql);
rs= pstm.executeQuery();
int rows=0;
while (rs.next())
{
rows++;}
int sum= rows/records;
if(rows & records !=0 || rows ==0)
{
sum++;}
vect.add(""+rows);
vect.add(""+sum);
int temp=rows;
//移到当前行
pstm.close();
//rs.close();
pstm =conn.prepareStatement(sql);
rs= pstm.executeQuery();
rows=(page-1)*records;
rows++;
while(rows>0)
{
rs.next();
rows--;
}
DealString ds= new DealString();
//查询当前页
int j=0;
do
{
if(rs==null||j==records||temp==0||page>sum)
{
break;
}
j++;
ResultSetMetaData rsmd =rs.getMetaData();
int cols =rsmd.getColumnCount();
Hashtable hash =new Hashtable();
for(int i=1;i<=cols;i++)
{
String field =ds.toString(rsmd.getColumnName(i));
String value = ds.toString(rs.getString(i));
hash.put(field,value);
}
vect.add(hash);
}while(rs.next());
}catch(SQLException sqle){}
finally
{
closeRs();
closePstm();
}
return vert;
}
提取数据表函数
//取得数据表数据
public Vector getData(String sql)
{
vertor vert =new Vertor();
try
{
pstm =conn.prepareStatement(sql);
rs=pstm.executeQuery();
DealString ds=new DealString();
ResultSetMetaData rsmd=rs.getMetaData();
int cols=rsmd.getColumnCount();
while(rs.next())
{
Hashtable hash =new Hashtable();
for(int i=1;i<=cols;i++)
{
Hashtable hash =new Hashtable();
for(int i=1;i<cols;i++)
{
String field =ds.toString(rsmd.getColumnName(i));
String value =ds.toString(ts.getString(i));
hash.put(field,value);
}
vect.add(hast);
}
}catch(SQLException sqle){}
return vect;
}
DataBase 排序函数
//为某一个字段进行重新排序
public int setSort(String table,String field1,String field2,String wherestr,String orderstr,boolean b)
{
// 写入序列号,field2 为惟一字段*/
try
{
String sql ="select "+field2+" from "+table;
if(!wherestr.equals(""))sql += " where "+wherestr;
sql+= " "+orderstr;
pstm =conn.prepareStatement(sql);
rs = pstm.executeQuery();
PreparedStatement pstm_t=null;
int i=1;
while(rs.next())
{
if(b)// 为field2整型
{
sql="update "+table+" set "+field1+ "="+i+" where "+field2+"="rs.getString(1)+"";
}
else//为field2字符串
{
pstm_t =conn.prepareStatement(sql);
pstm_t.executeUpdate();
}
i++;
}
pstm_t.close();
}catch(SQlException sqle){}
return ();
}
//取得数据集对象
public Vector getResultSetData(ResultSet rs)
{
Vector vect =new Vector();
try
{
//取得列数和列名
ResultSetMetaData rsmd =rs.getMetaData();
int cols =rsmd.getColumnCount();
while(rs.next())
{
Hashtable hash = new Hashtable();
for(int i=1;i<=cols;i++)
{
DealString ds =new DealString();
String fiel = ds.toString(rsmd.getColumnName(i));
String value = ds.toSring(rs.getString(i));
hash.put(field,value);
}
vect.add(hash);
}
}
catch(SQLException sqle{}
return vect;
}
ParentBean.java
ParentBean 查询记录函数
public ResultSet selectRecord(String sql)
{
return db.QuerySQL(sql);
}
函数的参数是Vector类型,其形式定义为:第一个变量表示表名,为字符串类型;接下来的变量为Vector
类型,该对象的维数为三维。第一个变量为字段的名称,第二个变量为字段的数值,第三个变量为字段的
类型。以此类推,函数的参数中,如果需要增加的数据行中需要设定某一个列的数值,就需要增加该参数
的一个变量。例如执行如下语句:insert into user(id,name,pwd) values(1,'admin','admin'),则参数
应该如下:
{'admin',{'id','1','NUM'},{'name','admin','CHAR'},{'pwd','admin','CHAR'}}
其中的数据类型有NUM,CHAR,TIME,NUM表示数值型,CHAR表示字符串型,TIME表示日期型号,如果需要
扩展,只需要在该组件中修改此处即可,这样修改一处,就可以对整个系统进行数据库的改造,彻底实现
了分层,极大地方便了数据库的移植。
在本函数中,按照以上定义的数据结构进行SQL语句的组合,而函数的参数是在执行数据库操作之前进行
的组合,这样可以实现用户层与数据层的分离,修改任何一层都不需要改动另外一层。在新增与组合过程
中,按照语句的规则,应该先有“insert into 表名”,再依次输出字段名称,然后组合"values"关键字
,最后依次输出字段的数值,在这个组合的过程中,注意字段类型的区别,最后SQL语句组合完成,调用
执行低层数据库函数。
ParentBean新增记录函数
/**新增记录*/
protected int insertRecord(Vector vect)
{
/**Vector第1项 表名(String)
// 第2项 列名(Vector[Field(String),Value(String),Type("CHAR","NUM")])*/
//临时变量
String sqlField ="";//形如(F1,F2)
String sqlValue ="";//形如(V1,V2)
String type ="";
for(int i=1;i<vect.size;i++)
{
//对某一个字段
Vector v_t =(Vector)vect.get(i);
field =(String)v_t.get(0);
value =(String)v_t.get(1);
if(value.indexOf("")!=-1)
{
value = value.replaceAll(""",""")
}
type =(String)v_t.get(2);
//组合字段SQL
if(sqlField.equals(""))sqlField = "(";
else sqlField = sqlField + ",";
sqlField = sqlField + field;
//组合值SQL
if(sqlValue.equals(""))sqlValue="(";
else sqlValue= sqlValue = ",";
if(value.equals(""))//为空时
{
sqlValue= sqlValue + "null";
}
else if(type.equals("CHAR"))//字符串
{
sqlValue = sqlValue + "'" + value + "'"
}
else if(type.equals("NUM"))//数值
{
sqlValue = sqlValue + value;
}
else if(type.equals("TIME"))//日期
{
sqlValue = sqlValue + "to_date('yyyy-MM-dd HH:mm:ss','"+value+"')";
}
}
sqlFiele = sqlField + ")";
sqlValue = sqlValue + ")";
String sql ="insert into "+(String)vect.get(0) + sqlField + "values" + sqlValue;
return db.ExecuteSQL(sql);
}
ParentBean 修改记录函数
/**修改记录*/
protected int updateRecord(Vector vect)
{
/** Vector: 第一项 表名(String)
// 第二项 列名(Vector[Field(String),Value(String),Type("CHAR","NUM")])
// 第三项 条件(String sql)*/
//临时变量
String sqlSet = ""; 形如(Name='name',ID=9)
String field = "";
String value = "";
String type = "";
int i=1;
int n =vert.size();
for(;i<(n-1);i++)
{
//对某一个字段
Vector v_t = (Vector)vect.get(i);
field = (String)v_t.get(0);
value = (String)v_t.get(1);
if(value.indexOf("")!=-1)
{
value= value.replaceAll("'",""");
}
type = (String)v_t.get(2);
//组合字段SQL
if(sqlSet.equals(""))sqlSet = " ";
else sqlSet = sqlSet + ",";
sqlSet = sqlSet + field + "=";
if(value.equals("")&&type.equals("NUM"))//为空时
{
sqlSet = sqlSet + "null";
}
if(type.equals("CHAR"))//字符串
{
sqlSet = sqlSet + '"+ value +"';
}
else if(type.equals("NUM"))//数值
{
sqlSet = sqlSet + value;
}
else if(type.equals("TIME"))//日期
{
sqlSet = sqlSet + "to_date('yyyy-MM-dd HH:mm:ss','"+ value +"')";
}
}
String sql = "update "+(String)vect.get(0) + "set" + sqlSet;
String sqlWhere =(String)vect.get(vect.size()-1);
if(!sqlWhere.equals(""))
{
sql = sql = " where " + sqlWhere;
}
return db.ExecuteSQL(sql);
}
ParentBean 删除记录函数
/**删除记录*/
protected int deleteRecord(String sql)
{
retrun db.ExecuteSQL(sql);
}
/**执行语句*/
protected int executeUpdate(String sql)
{
return db.ExecuteSQL(sql);
}
/**写数据库时某一个字段的存储类型*/
protected Vector addVector(String field,String value,String type)
{
Vertor vect = new Vector();
vect.add(field);
vect.add(value);
vect.add(type);
return vect;
}
浙公网安备 33010602011771号