AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
using System;
using System.Data; // 包括一些通用数据库对象(如:DataSet,DataTable)的命名空间namespace MYADO
{
/// <summary>
/// 抽象数据库操作类 的摘要说明。
/// 此处声明为抽象类,类中的所有方法也均为抽象方法以便子类覆盖
/// </summary>
public abstract class DBOperator
{
/// <summary>
/// 得到数据连接
/// </summary>
public abstract IDbConnection Connection
{
get;
} /// <summary>
/// 打开数据库连接
/// </summary>
public abstract void Open(); /// <summary>
/// 关闭数据库连接
/// </summary>
public abstract void Close(); /// <summary>
/// 开始一个事务
/// </summary>
public abstract void BeginTrans(); /// <summary>
/// 提交一个事务
/// </summary>
public abstract void CommitTrans(); /// <summary>
/// 回滚一个事务
/// </summary>
public abstract void RollbackTrans(); /// <summary>
/// 执行SQL语句,没有返回值
/// </summary>
/// <param name="sql">SQL语句</param>
public abstract void ExeSql(string sql); /// <summary>
/// 执行Insert SQL语句返回当前ID
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="a">临时变量</param>
/// <returns>当前ID</returns>
public abstract int ExeSql(string sql, int a); /// <summary>
/// 执行SQL语句返回第一行第一列的值
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>第一行第一列的值</returns>
public abstract string ExeSqlScalar(string sql); /// <summary>
/// 执行SQL语句返回影响行数
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>影响行数</returns>
public abstract int ExeSqlRows(string sql); /// <summary>
/// 获取DataSet
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>DataSet</returns>
public abstract DataSet GetDataSet(string sql); /// <summary>
/// 获取DataTable
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>DataTable</returns>
public abstract DataTable GetDataTable(string sql); /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="p_ProcedureName">存储过程名</param>
/// <param name="p_SqlParameterArray">存储过程参数</param>
public abstract void ExeProcedure(string p_ProcedureName, System.Data.SqlClient.SqlParameter [] p_SqlParameterArray); /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="p_ProcedureName">存储过程名</param>
/// <param name="p_SqlParameterArray">存储过程参数</param>
/// <param name="p_TableIndex">表索引(多个表时)</param>
/// <returns></returns>
public abstract DataSet ExeProcedure(string p_ProcedureName, System.Data.SqlClient.SqlParameter [] p_SqlParameterArray, int p_TableIndex);
}
}

解决方案 »

  1.   

    using System;namespace MYADO
    {
    /// <summary>
    /// 数据库类型
    /// </summary>
    public enum DBEnum
    {
    /// <summary>
    /// OleDB 数据库
    /// </summary>
    OleDB,
    /// <summary>
    /// ODBC 数据库
    /// </summary>
    ODBC,
    /// <summary>
    /// Oracle 数据库
    /// </summary>
    Oracle,
    /// <summary>
    /// SQL Server 数据库
    /// </summary>
    SQLServer
    }
    }
      

  2.   

    using System;namespace MYADO
    {
    /// <summary>
    /// 调用数据库操作类的工厂类 的摘要说明。
    /// </summary>
    public class DBOperatorFactory
    {
    /// <summary>
    /// 获取一个数据库操作对象
    /// </summary>
    /// <param name="strConnection">数据库连接字符串</param>
    /// <returns>数据库操作对象</returns>
    public static DBOperator GetDBOperator(string strConnection)
    {
    return new SqlDBOperator(strConnection);
    } /// <summary>
    /// 获取一个数据库操作对象
    /// </summary>
    /// <param name="strConnection">数据库连接字符串</param>
    /// <param name="p_DBEnum">数据类型</param>
    /// <returns>数据库操作对象</returns>
    public static DBOperator GetDBOperator(string strConnection, DBEnum p_DBEnum)
    {
    DBOperator db = null; switch (p_DBEnum)
    {
    case DBEnum.OleDB :
    {
    //db = new OleDBOperator(strConnection);
    break;
    }
    case DBEnum.ODBC :
    {
    //db = new ODBCDBOperator(strConnection);
    break;
    }
    case DBEnum.Oracle :
    {
    break;
    }
    case DBEnum.SQLServer :
    {
    db = new SqlDBOperator(strConnection);
    break;
    }
    default :
    {
    //db = new OleDBOperator(strConnection);
    db = new SqlDBOperator(strConnection);
    break;
    }
    } return db;
    }
    }
    }
      

  3.   

    using System;
    using System.Data;
    using System.Data.SqlClient; // 封装SQL Sevrer 的访问方法的命名空间namespace MYADO
    {
    /// <summary>
    /// 实现SQL Server数据库操作 的摘要说明。
    /// </summary>
    internal class SqlDBOperator : DBOperator
    {
    /// <summary>
    /// 数据库连接
    /// </summary>
    private SqlConnection _conn;
    /// <summary>
    /// 事务处理类
    /// </summary>
    private SqlTransaction _trans;
    /// <summary>
    /// 获取当前是否处于事务处理中,默认值false
    /// </summary>
    private bool isTransaction = false;

    public SqlDBOperator(string strConnection)
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    this._conn = new SqlConnection(strConnection);
    } /// <summary>
    /// 获取当前SQL Server连接
    /// </summary>
    public override IDbConnection Connection
    {
    get
    {
    return this._conn;
    }
    }
    /// <summary>
    /// 打开SQL Server连接
    /// </summary>
    public override void Open()
    {
    if (_conn.State != ConnectionState.Open)
    {
    try
    {
    _conn.Open();
    }
    catch
    {
    }
    }
    } /// <summary>
    /// 关闭SQL Server连接
    /// </summary>
    public override void Close()
    {
    if (_conn.State == ConnectionState.Open)
    {
    try
    {
    _conn.Close();
    }
    catch
    {
    }
    }
    } /// <summary>
    /// 开始一个SQL Server事务
    /// </summary>
    public override void BeginTrans()
    {
    _trans = _conn.BeginTransaction();
    isTransaction = true;
    } /// <summary>
    /// 提交一个SQL Server事务
    /// </summary>
    public override void CommitTrans()
    {
    _trans.Commit();
    isTransaction = false;
    } /// <summary>
    /// 回滚一个SQL Server事务
    /// </summary>
    public override void RollbackTrans()
    {
    _trans.Rollback();
    isTransaction = false;
    } /// <summary>
    /// 执行一个SQL语句(UPDATE,INSERT)
    /// </summary>
    /// <param name="sql">SQL语句</param>
    public override void ExeSql(string sql)
    {
    // 打开
    this.Open(); SqlCommand cmd = new SqlCommand();
    cmd.Connection = this._conn;
    if (isTransaction == true)
    {
    cmd.Transaction = this._trans;
    }
    cmd.CommandText = sql;
    try
    {
    cmd.ExecuteNonQuery();
    }
    catch
    {
    } // 释放
    this.Close();
    } /// <summary>
    /// 执行一个SQL语句(INSERT)返回当前ID
    /// </summary>
    /// <param name="sql">SQL语句</param>
    /// <param name="a">临时变量</param>
    /// <returns>当前ID</returns>
    public override int ExeSql(string sql, int a)
    {
    int identity = -1;

    // 打开
    this.Open(); SqlCommand cmd = new SqlCommand();
    cmd.Connection = this._conn;
    if (isTransaction == true)
    {
    cmd.Transaction = this._trans;
    }
    cmd.CommandText = sql + " select @@identity as 'identity'";
    try
    {
    // 第一行第一列的值为当前ID
    SqlDataReader dr = cmd.ExecuteReader();

    if (dr.Read())
    {
    identity = int.Parse(dr[0].ToString());
    } dr.Close();
    }
    catch
    {
    } // 释放
    this.Close(); return identity;
    } /// <summary>
    /// 执行SQL语句返回第一行第一列的值
    /// </summary>
    /// <param name="sql">SQL语句</param>
    /// <returns>第一行第一列的值</returns>
    public override string ExeSqlScalar(string sql)
    {
    DataTable dt = null;
    try
    {
    dt = this.GetDataTable( sql);
    if (dt.Rows.Count > 0)
    {
    string v_Value = dt.Rows[0][0].ToString();
    dt.Dispose();
    return v_Value;
    }
    else
    {
    return "";
    }
    }
    catch
    {
    return "";
    }
    }
    /// <summary>
    /// 执行SQL语句返回影响行数
    /// </summary>
    /// <param name="sql">SQL语句</param>
    /// <returns>影响行数</returns>
    public override int ExeSqlRows(string sql)
    {
    DataTable dt = null;
    try
    {
    dt = this.GetDataTable( sql);
    int v_RowsCount = dt.Rows.Count;
    dt.Dispose();
    return v_RowsCount;
    }
    catch
    {
    return -1;
    }
    } /// <summary>
    /// 获取DataSet
    /// </summary>
    /// <param name="sql">SQL语句</param>
    /// <returns>DataSet</returns>
    public override DataSet GetDataSet(string sql)
    {
    // 打开
    this.Open(); SqlCommand cmd = new SqlCommand();
    cmd.Connection = this._conn;
    if (isTransaction == true)
    {
    cmd.Transaction = this._trans;
    }
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter();
    cmd.CommandText = sql;
    da.SelectCommand = cmd;
    try
    {
    da.Fill(ds);
    }
    catch
    {
    }

    // 释放
    this.Close();

    return ds;
    } /// <summary>
    /// 获取DataTable
    /// </summary>
    /// <param name="sql">SQL语句</param>
    /// <returns>DataTable</returns>
    public override DataTable GetDataTable(string sql)
    {
    // 打开
    this.Open(); SqlCommand cmd = new SqlCommand();
    cmd.Connection = this._conn;
    if (isTransaction == true)
    {
    cmd.Transaction = this._trans;
    }
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter();
    cmd.CommandText = sql;
    da.SelectCommand = cmd;
    try
    {
    da.Fill(dt);
    }
    catch
    {
    } // 释放
    this.Close(); return dt;
    } /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="p_ProcedureName">存储过程名</param>
    /// <param name="p_SqlParameterArray">存储过程参数</param>
    public override void ExeProcedure(string p_ProcedureName, SqlParameter[] p_SqlParameterArray)
    {
    // 打开
    this.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = p_ProcedureName;
    cmd.Connection = this._conn;
    cmd.CommandType = CommandType.StoredProcedure;
    foreach (SqlParameter Sq in p_SqlParameterArray)
    {
    cmd.Parameters.Add( Sq);
    }
    cmd.ExecuteNonQuery();
    // 释放
    this.Close();
    } /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="p_ProcedureName">存储过程名</param>
    /// <param name="p_SqlParameterArray">存储过程参数</param>
    /// <param name="p_TableIndex">表索引(多个表时)</param>
    /// <returns>DataSet</returns>
    public override DataSet ExeProcedure(string p_ProcedureName, SqlParameter[] p_SqlParameterArray, int p_TableIndex)
    {
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(p_ProcedureName, this._conn);
    da.SelectCommand.CommandType = CommandType.StoredProcedure;
    foreach(SqlParameter Sq in p_SqlParameterArray)
    {
    da.SelectCommand.Parameters.Add( Sq);
    }
    da.Fill(ds);
    return ds;
    }
    }
    }
      

  4.   

    首先将类在需要应用的页面的cs后台文件中进行实例化,然后调用其中的函数或者方法即可例如:
       DBOperator mydb=new DBOperator();//进行实例化
       mydb.类中的方法或者函数;
      

  5.   

    哦,没有仔细看,原来是个abstract 抽象类阿
      

  6.   

    抽象作用:
    假设有一个抽象类:  <形状>
    并且有三个类继承了<形状>,它们是《三角形》《矩形》《正方形》
    如果开关里有一个抽象方法:
    public void PrintArea() {};   //输出面积如果《形状》类是abstract 的,那么《三角形》《矩形》《正方形》
    里面都必须定义各自的计算面积的方法,如果不定义,那么就会出错,因为它们三者计算面积的方法
    是不同的。
    假如《三角形》类没有定义PrintArea() 方法,则程序运行在多态时,调用〈三角形〉的方法时就会
    出错。
    基类PrintArea() 方法的abstract 就限制了《三角形》《矩形》《正方形》必须都有自己的方法 PrintArea() ,这是abstract 规定的。