独上高楼网站
  •    你所在位置:首页 VS.netC#C#经验〉三层架构之数据库访问层完全篇(C#)-.NET教程,C#语言
  • 三层架构之数据库访问层完全篇(C#)-.NET教程,C#语言
  • 作者:佚名  文章来源:http://www.e2web.cn/temp/0001/20066151523452741.htm  发布日期:2007-07-04  浏览次数:1825
  • 打印这篇文章
  • using System;

    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;

    namespace DbBase
    {

    public abstract class Base
    {

    #region "Fields of base calss"

    protected static string strConn = ConfigurationSettings.AppSettings["strConnection"];

    protected static string strSQL;

    #endregion


    #region "Properties of base class"
    }

    #endregion


    #region "Functions of base class"
    public Base()
    {
    //
    // TODO: Add constructor logic here
    //
    }

    ///


    /// executing SQL commands
    ///

    /// string
    /// return int
    protected static int ExecuteSql(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(strConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    myCmd.ExecuteNonQuery();
    return 0;
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }


    ///
    ///executing SQL commands
    ///

    /// 要执行的SQL语句,为字符串类型string
    /// 返回执行情况,整形int
    protected static int ExecuteSqlEx(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(strConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);

    try
    {
    myCn.Open();
    SqlDataReader myReader = myCmd.ExecuteReader();
    if(myReader.Read())
    {
    return 0;
    }
    else
    {
    throw new Exception("Value Unavailable!");
    }
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }


    ///
    /// get dataset
    ///

    /// (string)
    /// (DataSet)
    protected static DataSet ExecuteSql4Ds(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(strConn);
    try
    {
    myCn.Open();
    SqlDataAdapter sda = new SqlDataAdapter(strSQL,myCn);
    DataSet ds = new DataSet("ds");
    sda.Fill(ds);
    return ds;
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCn.Close();
    }
    }


    ///
    /// get single value
    ///

    /// (string)
    /// (int)
    protected static int ExecuteSql4Value(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(strConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    object r = myCmd.ExecuteScalar();
    if(Object.Equals(r,null))
    {
    throw new Exception("value unavailable!");
    }
    else
    {
    return (int)r;
    }
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }


    ///
    /// get object
    ///

    /// (string)
    /// (object)
    protected static object ExecuteSql4ValueEx(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(strConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    object r = myCmd.ExecuteScalar();
    if(Object.Equals(r,null))
    {
    throw new Exception("object unavailable!");
    }
    else
    {
    return r;
    }
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }


    ///
    /// execute multipul SQL commands
    ///

    /// string
    /// int
    protected static int ExecuteSqls(string[] strSQLs)
    {
    SqlConnection myCn = new SqlConnection(strConn);
    SqlCommand myCmd = new SqlCommand();
    int j=strSQLs.Length;

    try
    {
    myCn.Open();
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    SqlTransaction myTrans = myCn.BeginTransaction();

    try
    {
    myCmd.Connection = myCn;
    myCmd.Transaction = myTrans;

    foreach(string str in strSQLs)
    {
    myCmd.CommandText = str;
    myCmd.ExecuteNonQuery();
    }
    myTrans.Commit();
    return 0;
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    myTrans.Rollback();
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }

    #endregion
    }
    }

  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页