n层应用程序中的连接控制

时间:2014-12-10 07:03:19

标签: c# n-tier-architecture

我是N层应用程序的新手,我试图通过创建自己的应用程序来了解N层应用程序的工作方式。

我阅读了几篇关于它的文章,但没有什么比文字墙更重要了(我可能找不到合适的地方)。

虽然我有一个工具可以帮助生成DAL,BLL类,但它就像一个'大纲'。我没有与DAL,BLL合作的经验......所以我做不了多少。

以下是由生成工具制作的代码(如我所说),并由我自己稍作修改。

DAL

Namespace FIRSTAPP.DAL
{
    class Teacher
    {
        clsOLEDB db = new clsOLEDB();

        public OleDbDataReader SelectAll()
        {
            try
            {
                db.OpenConnection();
                return db.Excute("SELECT * FROM TEACHER");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

        }        
    public OleDbDataReader SelectRow()
        {}
   }
}

BLL

namespace FIRSTAPP.BLL
{
    class Teacher
    {
        public string Id { get; set; }
        public string FullName { get; set; }
        public DateTime DateOfBirth { get; set; }

        public List< Teacher > SelectAll()
        {
            DAL.Teacher dalTeacher = new DAL.Teacher();
            IDataReader dr = dalTeacher.SelectAll();

            List<Teacher> TeacherList = new List<Teacher>();
            while (dr.Read())
            {
                Teacher myTeacher = new Teacher
                {
                    Id = (string)dr["Id"],
                    FullName = (string)dr["FullName"],
                    DateOfBirth = (DateTime)dr["DateOfBirth "],
                };
                TeacherList.Add(myTeacher);
            }
            dr.Close();

            return TeacherList;
        }

Public Teacher SelectRow(string TeacherId)
{}
}
}

DBConnector

namespace FIRSTAPP.DB
{
    public class clsOLEDB
    {
        string mConnectionString = @"Provider = Microsoft.JET.OLEDB.4.0; Data Source = .\FirstAppDB.mdb";
        OleDbConnection mConnection;
        OleDbDataReader dataReader;
        OleDbCommand cmdCommand;

        public void OpenConnection()
        {
            mConnection = new OleDbConnection(mConnectionString);
            try
            {
                mConnection.Open();
            }
            catch
            {
                throw new Exception("Could not connect to DB");
            }
            finally
            {
                 if ( mConnection != null )
                       mConnection.Close();
            }
        }

        public OleDbDataReader Excute(string SQLText)
        { 
            cmdCommand = mConnection.CreateCommand();
            cmdCommand.CommandText = SQLText;

            try
            {
                return cmdCommand.ExecuteReader();
            }
            catch
            {
                throw new Exception("Has an error when executing");
            }
        }
public void CloseConnection()
        {
            mConnection.Close();
        }
    }
}

我的问题是:

  1. 如果我们需要从数据源获取数据,我们必须执行以下步骤:打开连接 - &gt;阅读数据 - &gt;关闭读者 - &gt;关闭连接。 我的问题是我不知道在BLL或DAL中我应该把Close连接语句放在哪里?怎么做?细节越多越好。

  2. 您可以花1分钟时间查看我的代码吗?它足够干净吗?或者它有任何其他问题吗?

  3. 很抱歉,如果我的英语有任何错误。非常感谢你。

0 个答案:

没有答案