Объясните, что делает этот код

using System;    
    class DataEngine
    {
        string _fname;
        string[] columns;
        System.Data.OleDb.OleDbConnection connection;
        System.Data.OleDb.OleDbCommand Command;
        System.Data.OleDb.OleDbDataReader Reader;
        public DataEngine(string filename,params string[] columnsNames)
        {
            _fname = filename;
            columns = new string[columnsNames.Length];
            Array.Copy(columnsNames, columns,columnsNames.Length );
        }
        public Angar SelectAllTasks(string tableName) //Виберіть усі завдання
    {
        Loader();
            Angar answer;
            answer = new Angar();
            string SQL = "SELECT * FROM "+tableName+" ;";
            Reader = Execute(SQL);
            while (Reader.Read())
            {
                Task temp;
                temp=new Task();
              //DO IT
                temp.Body = Reader.GetValue(Reader.GetOrdinal("Body")).ToString();
                temp.Header  = Reader.GetValue(Reader.GetOrdinal("Header")).ToString();
                temp.Worker = Reader.GetValue(Reader.GetOrdinal("Worker")).ToString();
                temp.ID =Convert.ToInt64( Reader.GetValue(Reader.GetOrdinal("ID")));
                temp.IsDone =(bool) Reader.GetValue(Reader.GetOrdinal("IsDone"));
                temp.Date =Convert.ToDateTime( Reader.GetValue(Reader.GetOrdinal("TargetDate")));
                answer.Storage.Add(temp);
            }
            return answer;
        }
        public System.Collections.ObjectModel.Collection<object> Select(string tableName,
        string columnName, string value, string comma) //Вибір елементів Перший елемент - це CellsCount
    {
        Loader();
            System.Collections.ObjectModel.Collection<object> answer;
            answer = new System.Collections.ObjectModel.Collection<object>();
            string SQL = "SELECT * FROM " + tableName + "WHERE "+columnName+"="+comma+value +comma+";";
            Reader = Execute(SQL);
            answer.Add(Reader.FieldCount);
            while (Reader.Read())
            {
                for (int i = 0; i < Reader.FieldCount; i++)
                {
                    answer.Add(Reader[i]);
                }
            }
            return answer;
        }
        public System.Collections.ObjectModel.Collection<object> SelectAll(string tableName) //вибрати користувача. Перший елемент - CellsCount
    {
        Loader();
            System.Collections.ObjectModel.Collection<object> answer;
            answer = new System.Collections.ObjectModel.Collection<object>();
            string SQL = "SELECT * FROM " + tableName + ";";
            Reader = Execute(SQL);
            answer.Add(Reader.FieldCount);
            while (Reader.Read())
            {
                for (int i = 0; i < Reader.FieldCount; i++)
                {
                    answer.Add(Reader[i]);
                }
            }
            return answer;
        }
        private System.Data.OleDb.OleDbDataReader Execute(string command)
        {
            Command = connection.CreateCommand();
            Command.CommandText = command;
            return Command.ExecuteReader();
        }
        private void Loader()
        {
            if (connection == null)
                connection = CreateConnection();
            if (connection.State != System.Data.ConnectionState.Open)
                connection.Open();
        }
        private System.Data.OleDb.OleDbConnection CreateConnection() //Створіть з'єднання
    {
        System.Data.OleDb.OleDbConnection c;
            c = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+_fname+";");
            return c;
        }
        public void InsertNewTask(Task t,string tableName)
        {
            Loader();
            string sql = "INSERT INTO "+tableName+" (TargetDate,Header,Body,Worker,IsDone) VALUES ('"+t.Date.ToShortDateString()
                + "','" + t.Header.Replace("'", "`") + "','" + t.Body.Replace("'", "`") + "','" + t.Worker.Replace("'", "`") + "'," + t.IsDone.ToString() + ");";
            Execute(sql);
        }
        public void UpdateTask(Task t, string tableName)
        {
            Loader();
            string SQL = "UPDATE " + tableName + " SET TargetDate='"+t.Date.ToShortDateString()+
                "' , Header='" + t.Header.Replace("'", "`") + "' , Body='" + t.Body.Replace("'", "`")
                + "' , Worker='" + t.Worker.Replace("'", "`")
                +"' , IsDone="+t.IsDone.ToString()+" WHERE ID="+t.ID.ToString()+";";
            Execute(SQL);
        }
        public Task SelectById(string tableName, long id)
        { 
            string SQL = "SELECT * FROM "+tableName+" WHERE ID="+id.ToString()+" ;";
            Reader = Execute(SQL);
            Reader.Read();
                Task temp;
                temp=new Task();
              //DO IT
                temp.Body = Reader.GetValue(Reader.GetOrdinal("Body")).ToString();
                temp.Header  = Reader.GetValue(Reader.GetOrdinal("Header")).ToString();
                temp.Worker = Reader.GetValue(Reader.GetOrdinal("Worker")).ToString();
                temp.ID =Convert.ToInt64( Reader.GetValue(Reader.GetOrdinal("ID")));
                temp.IsDone =(bool) Reader.GetValue(Reader.GetOrdinal("IsDone"));
                temp.Date =Convert.ToDateTime( Reader.GetValue(Reader.GetOrdinal("TargetDate")));
                return temp;
        }
        public Angar SelectByDate(string tableName, DateTime dt)
        {
            Loader();
            string SQL = "SELECT * FROM " + tableName + " WHERE TargetDate='" + dt.ToShortDateString() + "';";
            Angar answer;
            answer = new Angar();
            Reader = Execute(SQL);
                 while (Reader.Read())
                {
                    Task temp;
                    temp = new Task();
                    //DO IT
                    temp.Body = Reader.GetValue(Reader.GetOrdinal("Body")).ToString();
                    temp.Header = Reader.GetValue(Reader.GetOrdinal("Header")).ToString();
                    temp.Worker = Reader.GetValue(Reader.GetOrdinal("Worker")).ToString();
                    temp.ID = Convert.ToInt64(Reader.GetValue(Reader.GetOrdinal("ID")));
                    temp.IsDone = (bool)Reader.GetValue(Reader.GetOrdinal("IsDone"));
                    temp.Date = Convert.ToDateTime(Reader.GetValue(Reader.GetOrdinal("TargetDate")));
                    answer.Storage.Add(temp);
                }
            return answer;
        }
        public void DeleteTask(string tableName, Task t)
        {
            Loader();
            string sql = "DELETE FROM "+tableName+" WHERE ID="+t.ID.ToString()+";";
            Execute(sql);
        }
        public void DeleteAllTask(string tableName)//Видаліть усі завдання
    {
        Loader();
            string sql = "DELETE FROM " + tableName + ";";
            Execute(sql);
        }
        public Angar SelectTask(string tableName, string columnName, string value, string comma)//Виберіть за певним стовпцем та значенням
    {
        Loader();
            string SQL = "SELECT * FROM " + tableName + " WHERE "+columnName+"=" +comma+ value +comma+ ";";
            Angar answer;
            answer = new Angar();
            Reader = Execute(SQL);
            while (Reader.Read())
            {
                Task temp;
                temp = new Task();
                //DO IT
                temp.Body = Reader.GetValue(Reader.GetOrdinal("Body")).ToString();
                temp.Header = Reader.GetValue(Reader.GetOrdinal("Header")).ToString();
                temp.Worker = Reader.GetValue(Reader.GetOrdinal("Worker")).ToString();
                temp.ID = Convert.ToInt64(Reader.GetValue(Reader.GetOrdinal("ID")));
                temp.IsDone = (bool)Reader.GetValue(Reader.GetOrdinal("IsDone"));
                temp.Date = Convert.ToDateTime(Reader.GetValue(Reader.GetOrdinal("TargetDate")));
                answer.Storage.Add(temp);
            }
            return answer;
        }
    }
    public class Task
    {
        long _id;
        string _worker, _body, _header;
        DateTime _Date;
        bool _isdone;
        public long ID
        {
            get { return _id; }
            set { _id = value; }
        }
        public string Worker
        {
            get { return _worker; }
            set { _worker = value; }
        }
        public string Body
        {
            get { return _body; }
            set { _body = value; }
        }
        public string Header
        {
            get { return _header; }
            set { _header = value; }
        }
        public DateTime Date
        {
            get { return _Date; }
            set { _Date = value; }
        }
        public bool IsDone
        {
            get { return _isdone; }
            set { _isdone = value; }
        }
        public object[] ToValues()
        {
            object[] a;
            a = new object[6];
            a[0] = ID;
            a[1] = Date;
            a[2] = Header ;
            a[3] = Body;
            a[4] = Worker;
            a[5] = IsDone;
            return a;
        }
    }
    class Angar
    {
        System.Collections.ObjectModel.Collection<Task> Array;
        public Angar()
        {
            Array=new System.Collections.ObjectModel.Collection<Task>();
        }
        public System.Collections.ObjectModel.Collection<Task> Storage
        {
            get { return Array; }
            set { Array = value; }
        }
        public static Angar  operator + (Task obj,Angar obj2)
        {
            obj2.Storage.Add(obj);
            return obj2;
        }

    }

Объясните, что делает эта часть кода


Ответы (0 шт):