using
System;
using System.Data;
using System.Configuration;
using System.Data.OleDb;
/// <summary>
/// 通用数据库类(Access专用)未测试
/// <author> ZhengFei </author>
/// <version> 2.0版 </version>
/// <realseDate> 2007-5-10 </realseDate>
/// </summary>
namespace AccessDataBase
{
public class AccDataBase
{
string _ConnStr = "" ;
/// <summary>
/// 不带参数的构造函数(默认取web.config中的连接字符串)
/// </summary>
public AccDataBase()
{
_ConnStr = ConfigurationManager.ConnectionStrings[ " AccConn " ].ToString();
}
/// <summary>
/// 构造函数(重载,带连接字符串)
/// </summary>
/// <param name="connstr"> 数据库连接字符串 </param>
public AccDataBase( string connstr)
{
try
{
this ._ConnStr = connstr;
}
catch (Exception ep)
{
throw ep;
}
}
/// <summary>
/// 数据库链接字符串
/// </summary>
public string ConnStr
{
get
{
return _ConnStr;
}
set
{
_ConnStr = value;
}
}
/// <summary>
/// 获得一个已连接数据库的OleDbConnection对象
/// </summary>
/// <returns> 返回一个已连接数据库的OleDbConnection对象 </returns>
public OleDbConnection GetConn()
{
OleDbConnection Conn = new OleDbConnection(_ConnStr);
try
{
Conn.Open();
}
catch
{
throw ;
}
return Conn;
}
/// <summary>
/// 释放资源,并回收垃圾
/// </summary>
/// <returns></returns>
public void Dispose(OleDbConnection Conn)
{
if (Conn != null )
{
Conn.Close();
Conn.Dispose();
}
GC.Collect();
}
/// <summary>
/// 生成Command对象
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="Conn"> OledbConnection对象 </param>
/// <returns></returns>
public OleDbCommand CreateCommand( string SQL, OleDbConnection Conn)
{
if (Conn.State != ConnectionState.Open)
{
try
{
Conn.Open();
}
catch
{
throw ;
}
}
OleDbCommand Cmd = new OleDbCommand(SQL, Conn);
return Cmd;
}
/// <summary>
/// 返回adapter对象
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="Conn"> SqlConnection连接对象 </param>
/// <returns> 返回adapter对象 </returns>
public OleDbDataAdapter CreateDataAdapter( string SQL, OleDbConnection Conn)
{
if (Conn.State != ConnectionState.Open)
{
try
{
Conn.Open();
}
catch
{
throw ;
}
}
OleDbDataAdapter Da = new OleDbDataAdapter(SQL, Conn);
return Da;
}
public OleDbDataAdapter CreateDataAdapter(OleDbCommand cmd)
{
OleDbDataAdapter Da = new OleDbDataAdapter(cmd);
return Da;
}
/// <summary>
/// 验证是否有数据
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <returns></returns>
public bool ExistDate( string SQL)
{
OleDbConnection Conn = this .GetConn();
OleDbDataReader dr;
dr = this .CreateCommand(SQL, Conn).ExecuteReader();
if (dr.Read())
{
Dispose(Conn);
return true ;
}
else
{
Dispose(Conn);
return false ;
}
}
/// <summary>
/// 返回一个带参数的OledbCommand对象
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="Conn"> OLEDBConnection对象 </param>
/// <param name="sp"> OleDbParameter数组 </param>
/// <returns></returns>
public OleDbCommand CreateCommand( string SQL, OleDbConnection Conn, OleDbParameter[] sp)
{
try
{
if (Conn.State != ConnectionState.Open)
{
Conn.Open();
}
}
catch
{
throw ;
}
OleDbCommand Cmd = new OleDbCommand(SQL, Conn);
if (sp != null )
{
Cmd.Parameters.Clear();
foreach (OleDbParameter s in sp)
Cmd.Parameters.Add(s);
}
return Cmd;
}
/// <summary>
/// 执行无参数的OLEDBCommand对象(无返回)
/// </summary>
/// <param name="SQL"> SQL语句 </param>
public void Execute( string SQL)
{
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateCommand(SQL, conn).ExecuteNonQuery();
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ;
}
/// <summary>
/// 执行有参数的OLEDBCommand对象(无返回)
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="SP"> OleDbParameter参数数组 </param>
public void Execute( string SQL, OleDbParameter[] SP)
{
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateCommand(SQL, conn, SP).ExecuteNonQuery();
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ;
}
/// <summary>
/// 执行SQL语句返回OledbDataReader(记得关闭)
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public OleDbDataReader ExecuteReader( string SQL)
{
OleDbDataReader dr;
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
dr = CreateCommand(SQL, conn).ExecuteReader();
}
catch
{
throw ;
}
return dr;
}
/// <summary>
/// 执行SQL语句返回OledbDataReader(记得关闭)
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="SP"> OleDbParameter数组 </param>
/// <returns></returns>
public OleDbDataReader ExecuteReader( string SQL, OleDbParameter[] SP)
{
OleDbDataReader dr;
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
dr = CreateCommand(SQL, conn, SP).ExecuteReader();
}
catch
{
throw ;
}
return dr;
}
/// <summary>
/// 执行SQL语句返回DataSet
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public DataSet ExecuteDataSet( string SQL, string TableName)
{
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateDataAdapter(SQL, conn).Fill(ds, TableName);
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ds;
}
/// <summary>
/// 执行SQL语句返回DataSet
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="TableName"> 表名 </param>
/// <param name="sp"> 参数数组 </param>
/// <returns></returns>
public DataSet ExecuteDataSet( string SQL, string TableName, OleDbParameter[] sp)
{
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateDataAdapter(CreateCommand(SQL, conn, sp)).Fill(ds, TableName);
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ds;
}
/// <summary>
/// 创建输入参数
/// </summary>
/// <param name="ParameterName"> 参数名称 </param>
/// <param name="DbType"> 参数类型 </param>
/// <param name="Size"> 参数大小 </param>
/// <param name="Value"> 参数值 </param>
/// <returns> 新的参数 </returns>
public OleDbParameter MakeInputParameter( string ParameterName, OleDbType DbType, int Size, object Value)
{
return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Input, Value);
}
/// <summary>
/// 创建输出参数
/// </summary>
/// <param name="ParameterName"> 参数名称 </param>
/// <param name="DbType"> 参数类型 </param>
/// <param name="Size"> 参数大小 </param>
/// <returns> 新的参数 </returns>
public OleDbParameter MakeOutParameter( string ParameterName, OleDbType DbType, int Size)
{
return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Output, null );
}
/// <summary>
/// 创建储存过程参数
/// </summary>
/// <param name="ParameterName"> 参数名称 </param>
/// <param name="DbType"> 参数类型 </param>
/// <param name="Size"> 参数大小 </param>
/// <param name="Direction"> 参数方法 </param>
/// <param name="Value"> 参数值 </param>
/// <returns> 新的参数 </returns>
public OleDbParameter MakeParameter( string ParameterName, OleDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
OleDbParameter AccParam;
if (Size > 0 )
{
AccParam = new OleDbParameter(ParameterName, DbType, Size);
}
else
{
AccParam = new OleDbParameter(ParameterName, DbType);
}
AccParam.Direction = Direction;
if ( ! (Direction == ParameterDirection.Output && Value == null ))
{
AccParam.Value = Value;
}
return AccParam;
}
/// <summary>
/// 查询指定数量数据,返回DataSet(用于分页)
/// </summary>
/// <param name="TableName"> 表名 </param>
/// <param name="PK"> 主键 </param>
/// <param name="Fields"> 要查询的字段 </param>
/// <param name="Sort"> 排序字段 </param>
/// <param name="Filter"> 查询条件 </param>
/// <param name="PageSize"> 每页大小 </param>
/// <param name="CurrentPage"> 当前页码 </param>
/// <returns></returns>
public DataSet GetDataSet( string TableName, string PK, string Fields, string Sort, string Filter, int PageSize, int CurrentPage)
{
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
string sql = "" , and = "" ;
int num = 0 ;
if (Fields == "" ) Fields = " * " ;
if (Sort == "" )
{
Sort = string .Format( " order by {0} asc " , PK);
}
else
{
Sort = string .Format( " order by {0} " , Sort);
}
if (PageSize <= 0 ) PageSize = 10 ;
if (CurrentPage < 1 ) CurrentPage = 1 ;
num = (CurrentPage - 1 ) * PageSize;
if (Filter != "" )
{
Filter = " where ( " + Filter + " ) " ;
and = " and " ;
}
else
{
and = " where " ;
}
if (CurrentPage == 1 )
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} " , PageSize, Fields, TableName, Filter, Sort);
}
else
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} ({5} not in(select top {6} {7} from {8} {9} {10})) {11} " , PageSize, Fields, TableName, Filter, and, PK, num, PK, TableName, Filter, Sort, Sort);
}
ds = ExecuteDataSet(sql, TableName);
return ds;
}
/// <summary>
/// 查询指定数量数据,返回OleDbDataReader(用于分页)
/// </summary>
/// <param name="TableName"> 表名 </param>
/// <param name="PK"> 主键 </param>
/// <param name="Fields"> 要查询的字段 </param>
/// <param name="Sort"> 排序字段 </param>
/// <param name="Filter"> 查询条件 </param>
/// <param name="PageSize"> 每页大小 </param>
/// <param name="CurrentPage"> 当前页码 </param>
/// <returns></returns>
public OleDbDataReader GetDataReader( string TableName, string PK, string Fields, string Sort, string Filter, int PageSize, int CurrentPage)
{
OleDbDataReader dr;
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
string sql = "" , and = "" ;
int num = 0 ;
if (Fields == "" ) Fields = " * " ;
if (Sort == "" )
{
Sort = string .Format( " order by {0} asc " , PK);
}
else
{
Sort = string .Format( " order by {0} " , Sort);
}
if (PageSize <= 0 ) PageSize = 10 ;
if (CurrentPage < 1 ) CurrentPage = 1 ;
num = (CurrentPage - 1 ) * PageSize;
if (Filter != "" )
{
Filter = " where ( " + Filter + " ) " ;
and = " and " ;
}
else
{
and = " where " ;
}
if (CurrentPage == 1 )
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} " , PageSize, Fields, TableName, Filter, Sort);
}
else
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} ({5} not in(select top {6} {7} from {8} {9} {10})) {11} " , PageSize, Fields, TableName, Filter, and, PK, num, PK, TableName, Filter, Sort, Sort);
}
dr = ExecuteReader(sql);
return dr;
}
}
}
using System.Data;
using System.Configuration;
using System.Data.OleDb;
/// <summary>
/// 通用数据库类(Access专用)未测试
/// <author> ZhengFei </author>
/// <version> 2.0版 </version>
/// <realseDate> 2007-5-10 </realseDate>
/// </summary>
namespace AccessDataBase
{
public class AccDataBase
{
string _ConnStr = "" ;
/// <summary>
/// 不带参数的构造函数(默认取web.config中的连接字符串)
/// </summary>
public AccDataBase()
{
_ConnStr = ConfigurationManager.ConnectionStrings[ " AccConn " ].ToString();
}
/// <summary>
/// 构造函数(重载,带连接字符串)
/// </summary>
/// <param name="connstr"> 数据库连接字符串 </param>
public AccDataBase( string connstr)
{
try
{
this ._ConnStr = connstr;
}
catch (Exception ep)
{
throw ep;
}
}
/// <summary>
/// 数据库链接字符串
/// </summary>
public string ConnStr
{
get
{
return _ConnStr;
}
set
{
_ConnStr = value;
}
}
/// <summary>
/// 获得一个已连接数据库的OleDbConnection对象
/// </summary>
/// <returns> 返回一个已连接数据库的OleDbConnection对象 </returns>
public OleDbConnection GetConn()
{
OleDbConnection Conn = new OleDbConnection(_ConnStr);
try
{
Conn.Open();
}
catch
{
throw ;
}
return Conn;
}
/// <summary>
/// 释放资源,并回收垃圾
/// </summary>
/// <returns></returns>
public void Dispose(OleDbConnection Conn)
{
if (Conn != null )
{
Conn.Close();
Conn.Dispose();
}
GC.Collect();
}
/// <summary>
/// 生成Command对象
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="Conn"> OledbConnection对象 </param>
/// <returns></returns>
public OleDbCommand CreateCommand( string SQL, OleDbConnection Conn)
{
if (Conn.State != ConnectionState.Open)
{
try
{
Conn.Open();
}
catch
{
throw ;
}
}
OleDbCommand Cmd = new OleDbCommand(SQL, Conn);
return Cmd;
}
/// <summary>
/// 返回adapter对象
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="Conn"> SqlConnection连接对象 </param>
/// <returns> 返回adapter对象 </returns>
public OleDbDataAdapter CreateDataAdapter( string SQL, OleDbConnection Conn)
{
if (Conn.State != ConnectionState.Open)
{
try
{
Conn.Open();
}
catch
{
throw ;
}
}
OleDbDataAdapter Da = new OleDbDataAdapter(SQL, Conn);
return Da;
}
public OleDbDataAdapter CreateDataAdapter(OleDbCommand cmd)
{
OleDbDataAdapter Da = new OleDbDataAdapter(cmd);
return Da;
}
/// <summary>
/// 验证是否有数据
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <returns></returns>
public bool ExistDate( string SQL)
{
OleDbConnection Conn = this .GetConn();
OleDbDataReader dr;
dr = this .CreateCommand(SQL, Conn).ExecuteReader();
if (dr.Read())
{
Dispose(Conn);
return true ;
}
else
{
Dispose(Conn);
return false ;
}
}
/// <summary>
/// 返回一个带参数的OledbCommand对象
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="Conn"> OLEDBConnection对象 </param>
/// <param name="sp"> OleDbParameter数组 </param>
/// <returns></returns>
public OleDbCommand CreateCommand( string SQL, OleDbConnection Conn, OleDbParameter[] sp)
{
try
{
if (Conn.State != ConnectionState.Open)
{
Conn.Open();
}
}
catch
{
throw ;
}
OleDbCommand Cmd = new OleDbCommand(SQL, Conn);
if (sp != null )
{
Cmd.Parameters.Clear();
foreach (OleDbParameter s in sp)
Cmd.Parameters.Add(s);
}
return Cmd;
}
/// <summary>
/// 执行无参数的OLEDBCommand对象(无返回)
/// </summary>
/// <param name="SQL"> SQL语句 </param>
public void Execute( string SQL)
{
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateCommand(SQL, conn).ExecuteNonQuery();
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ;
}
/// <summary>
/// 执行有参数的OLEDBCommand对象(无返回)
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="SP"> OleDbParameter参数数组 </param>
public void Execute( string SQL, OleDbParameter[] SP)
{
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateCommand(SQL, conn, SP).ExecuteNonQuery();
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ;
}
/// <summary>
/// 执行SQL语句返回OledbDataReader(记得关闭)
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public OleDbDataReader ExecuteReader( string SQL)
{
OleDbDataReader dr;
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
dr = CreateCommand(SQL, conn).ExecuteReader();
}
catch
{
throw ;
}
return dr;
}
/// <summary>
/// 执行SQL语句返回OledbDataReader(记得关闭)
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="SP"> OleDbParameter数组 </param>
/// <returns></returns>
public OleDbDataReader ExecuteReader( string SQL, OleDbParameter[] SP)
{
OleDbDataReader dr;
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
dr = CreateCommand(SQL, conn, SP).ExecuteReader();
}
catch
{
throw ;
}
return dr;
}
/// <summary>
/// 执行SQL语句返回DataSet
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public DataSet ExecuteDataSet( string SQL, string TableName)
{
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateDataAdapter(SQL, conn).Fill(ds, TableName);
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ds;
}
/// <summary>
/// 执行SQL语句返回DataSet
/// </summary>
/// <param name="SQL"> SQL语句 </param>
/// <param name="TableName"> 表名 </param>
/// <param name="sp"> 参数数组 </param>
/// <returns></returns>
public DataSet ExecuteDataSet( string SQL, string TableName, OleDbParameter[] sp)
{
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
try
{
CreateDataAdapter(CreateCommand(SQL, conn, sp)).Fill(ds, TableName);
}
catch
{
throw ;
}
finally
{
Dispose(conn);
}
return ds;
}
/// <summary>
/// 创建输入参数
/// </summary>
/// <param name="ParameterName"> 参数名称 </param>
/// <param name="DbType"> 参数类型 </param>
/// <param name="Size"> 参数大小 </param>
/// <param name="Value"> 参数值 </param>
/// <returns> 新的参数 </returns>
public OleDbParameter MakeInputParameter( string ParameterName, OleDbType DbType, int Size, object Value)
{
return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Input, Value);
}
/// <summary>
/// 创建输出参数
/// </summary>
/// <param name="ParameterName"> 参数名称 </param>
/// <param name="DbType"> 参数类型 </param>
/// <param name="Size"> 参数大小 </param>
/// <returns> 新的参数 </returns>
public OleDbParameter MakeOutParameter( string ParameterName, OleDbType DbType, int Size)
{
return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Output, null );
}
/// <summary>
/// 创建储存过程参数
/// </summary>
/// <param name="ParameterName"> 参数名称 </param>
/// <param name="DbType"> 参数类型 </param>
/// <param name="Size"> 参数大小 </param>
/// <param name="Direction"> 参数方法 </param>
/// <param name="Value"> 参数值 </param>
/// <returns> 新的参数 </returns>
public OleDbParameter MakeParameter( string ParameterName, OleDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
OleDbParameter AccParam;
if (Size > 0 )
{
AccParam = new OleDbParameter(ParameterName, DbType, Size);
}
else
{
AccParam = new OleDbParameter(ParameterName, DbType);
}
AccParam.Direction = Direction;
if ( ! (Direction == ParameterDirection.Output && Value == null ))
{
AccParam.Value = Value;
}
return AccParam;
}
/// <summary>
/// 查询指定数量数据,返回DataSet(用于分页)
/// </summary>
/// <param name="TableName"> 表名 </param>
/// <param name="PK"> 主键 </param>
/// <param name="Fields"> 要查询的字段 </param>
/// <param name="Sort"> 排序字段 </param>
/// <param name="Filter"> 查询条件 </param>
/// <param name="PageSize"> 每页大小 </param>
/// <param name="CurrentPage"> 当前页码 </param>
/// <returns></returns>
public DataSet GetDataSet( string TableName, string PK, string Fields, string Sort, string Filter, int PageSize, int CurrentPage)
{
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
string sql = "" , and = "" ;
int num = 0 ;
if (Fields == "" ) Fields = " * " ;
if (Sort == "" )
{
Sort = string .Format( " order by {0} asc " , PK);
}
else
{
Sort = string .Format( " order by {0} " , Sort);
}
if (PageSize <= 0 ) PageSize = 10 ;
if (CurrentPage < 1 ) CurrentPage = 1 ;
num = (CurrentPage - 1 ) * PageSize;
if (Filter != "" )
{
Filter = " where ( " + Filter + " ) " ;
and = " and " ;
}
else
{
and = " where " ;
}
if (CurrentPage == 1 )
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} " , PageSize, Fields, TableName, Filter, Sort);
}
else
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} ({5} not in(select top {6} {7} from {8} {9} {10})) {11} " , PageSize, Fields, TableName, Filter, and, PK, num, PK, TableName, Filter, Sort, Sort);
}
ds = ExecuteDataSet(sql, TableName);
return ds;
}
/// <summary>
/// 查询指定数量数据,返回OleDbDataReader(用于分页)
/// </summary>
/// <param name="TableName"> 表名 </param>
/// <param name="PK"> 主键 </param>
/// <param name="Fields"> 要查询的字段 </param>
/// <param name="Sort"> 排序字段 </param>
/// <param name="Filter"> 查询条件 </param>
/// <param name="PageSize"> 每页大小 </param>
/// <param name="CurrentPage"> 当前页码 </param>
/// <returns></returns>
public OleDbDataReader GetDataReader( string TableName, string PK, string Fields, string Sort, string Filter, int PageSize, int CurrentPage)
{
OleDbDataReader dr;
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
string sql = "" , and = "" ;
int num = 0 ;
if (Fields == "" ) Fields = " * " ;
if (Sort == "" )
{
Sort = string .Format( " order by {0} asc " , PK);
}
else
{
Sort = string .Format( " order by {0} " , Sort);
}
if (PageSize <= 0 ) PageSize = 10 ;
if (CurrentPage < 1 ) CurrentPage = 1 ;
num = (CurrentPage - 1 ) * PageSize;
if (Filter != "" )
{
Filter = " where ( " + Filter + " ) " ;
and = " and " ;
}
else
{
and = " where " ;
}
if (CurrentPage == 1 )
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} " , PageSize, Fields, TableName, Filter, Sort);
}
else
{
sql = string .Format( " select top {0} {1} from {2} {3} {4} ({5} not in(select top {6} {7} from {8} {9} {10})) {11} " , PageSize, Fields, TableName, Filter, and, PK, num, PK, TableName, Filter, Sort, Sort);
}
dr = ExecuteReader(sql);
return dr;
}
}
}