using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
namespace ZXF
{
class FK_ACCESS : IDisposable
{
/// <summary>
/// 保护变量,数据库连接。
/// </summary>
protected System.Data .OleDb .OleDbConnection Connection;
/// <summary>
/// 保护变量,数据库连接串。
/// </summary>
protected String ConnectionString;
/// <summary>
/// 构造函数。
/// </summary>
/// <param name="path">数据库完全路径</param>
public FK_ACCESS(string path )
{
//
ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" + path;
//
}
/// <summary>
/// 析构函数,释放非托管资源
/// </summary>
~FK_ACCESS()
{
try
{
if (Connection != null)
Connection.Close();
}
catch(Exception e)
{
}
try
{
Dispose();
}
catch{}
}
/// <summary>
/// 保护方法,打开数据库连接。
/// </summary>
protected void Open()
{
if (Connection == null)
{
try
{
Connection = new OleDbConnection(ConnectionString);
}
catch(Exception e)
{
}
}
if (Connection.State.Equals(ConnectionState.Closed))
{
try
{
Connection.Open();
}
catch(Exception e)
{
}
}
}
/// <summary>
/// 公有方法,关闭数据库连接。
/// </summary>
public void Close()
{
try
{
if (Connection != null)
Connection.Close();
}
catch(Exception e)
{
}
}
/// <summary>
/// 公有方法,释放资源。
/// </summary>
public void Dispose()
{
// 确保连接被关闭
try
{
if (Connection != null)
{
Connection.Dispose();
Connection = null;
}
}
catch(Exception e)
{
}
}
/// <summary>
/// 公有方法,获取数据,返回一个OleDbDataReader (调用后主意调用SqlDataReader.Close())。
/// </summary>
/// <param name="OleDbString">Sql语句</param>
/// <returns>OleDbDataReader</returns>
public OleDbDataReader GetDataReader(String SqlString)
{
Open();
try
{
OleDbCommand cmd = new OleDbCommand(SqlString,Connection);
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
#if DEBUG
#endif
}
catch(Exception e)
{
return null;
}
}
/// <summary>
/// 公有方法,获取数据,返回一个DataSet。
/// </summary>
/// <param name="SqlString">SQL语句</param>
/// <returns></returns>
public DataSet GetDataSet(String SqlString)
{
DataSet dataset = new DataSet();
Open();
try
{
OleDbDataAdapter adapter = new OleDbDataAdapter(SqlString,Connection);
adapter.Fill(dataset);
#if DEBUG
#endif
}
catch(Exception e)
{
}
finally
{
Close();
}
return dataset;
}
/// <summary>
/// 公有方法,获取数据,返回一个DataRow。
/// </summary>
/// <param name="SqlString">SQL语句</param>
/// <returns>DataRow</returns>
public DataRow GetDataRow(String SqlString)
{
DataSet dataset = GetDataSet(SqlString);
dataset.CaseSensitive = false;
if (dataset.Tables[0].Rows.Count>0)
{
return dataset.Tables[0].Rows[0];
}
else
{
return null;
}
}
/// <summary>
/// 读取表库:DataTable
/// </summary>
/// <param name="ACC_SQL">SQL语句</param>
/// <returns></returns>
public DataTable ReadTable(string ACC_SQL)
{
Open();
DataSet RegSet = new DataSet();
OleDbDataAdapter RegAdapter = new OleDbDataAdapter(ACC_SQL, ConnectionString);
OleDbCommandBuilder abcd = new OleDbCommandBuilder(RegAdapter);
RegAdapter.Fill(RegSet, ACC_SQL);
Close();
return RegSet.Tables[ACC_SQL];
}
/// <summary>
/// 读取表行:DataRow;
/// </summary>
/// <param name="ACC_SQL">SQL语句</param>
/// <returns></returns>
public DataRow ReadRow(string ACC_SQL)
{
Open();
DataSet RegSet = new DataSet();
OleDbDataAdapter RegAdapter = new OleDbDataAdapter(ACC_SQL, ConnectionString);
OleDbCommandBuilder abcd = new OleDbCommandBuilder(RegAdapter);
RegAdapter.Fill(RegSet, ACC_SQL);
Close();
return RegSet.Tables[ACC_SQL].Rows[0];
}
/// <summary>
/// 更新数据:TDN[i] 是字段;TDS[i]是值;字段数;SQL语句
/// </summary>
/// <param name="TDN">字段名称</param>
/// <param name="TDS">字段数值</param>
/// <param name="S">字段数</param>
/// <param name="ACC_SQL">SQL语句</param>
/// <returns></returns>
public bool UpRow( string[] TDN ,string[] TDS,int S, string ACC_SQL )
{
try
{
Open();
DataSet RegSet=new DataSet();
OleDbDataAdapter RegAdapter=new OleDbDataAdapter(ACC_SQL,ConnectionString);
OleDbCommandBuilder abcd=new OleDbCommandBuilder (RegAdapter);
RegAdapter.Fill(RegSet, ACC_SQL);
int c = RegSet.Tables[ACC_SQL].Rows.Count;
for (int h=0;h<c;h++ )
{
RegSet.Tables[ACC_SQL].Rows[h].BeginEdit();
for (int i=0 ;i<S;i++)
{
RegSet.Tables[ACC_SQL].Rows[h][TDN[i]] = TDS[i];
}
RegSet.Tables[ACC_SQL].Rows[h].EndEdit();
}
RegAdapter.Update(RegSet, ACC_SQL);
Close() ;
return true;
}
catch(Exception e)
{
Close() ;
return false;
}
}
/// <summary>
/// 添加数据:TDN[i] 是字段;TDS[i]是值;字段数;SQL语句
/// </summary>
/// <param name="TDN">字段名称</param>
/// <param name="TDS">字段数值</param>
/// <param name="S">字段数</param>
/// <param name="ACC_SQL">SQL语句</param>
/// <returns></returns>
public bool AddRow( string[] TDN ,string[] TDS,int S, string ACC_SQL )
{
try
{
Open();
DataSet RegSet=new DataSet();
OleDbDataAdapter RegAdapter=new OleDbDataAdapter (ACC_SQL,ConnectionString);
OleDbCommandBuilder abcd=new OleDbCommandBuilder (RegAdapter);
RegAdapter.Fill (RegSet,ACC_SQL);
DataRow Row=RegSet.Tables [ACC_SQL].NewRow ();
for (int i=0 ;i<S;i++)
{
Row[TDN[i]]=TDS[i];
}
RegSet.Tables[ACC_SQL].Rows.Add(Row);
RegAdapter.Update(RegSet,ACC_SQL);
Close() ;
return true;
}
catch(Exception e)
{
Close() ;
return false;
}
}
/// <summary>
/// 执行SQL语句,返回成功数量
/// </summary>
/// <param name="ACC_SQL"></param>
/// <returns></returns>
public int ACC_SQL(string ACC_SQL)
{
Open();
int i=-1;
OleDbCommand myCommand =new OleDbCommand(ACC_SQL,Connection);
try
{
i = myCommand.ExecuteNonQuery();
}
catch (Exception e )
{
}
Close();
return i;
}
//结束
}
}