protected DataBaseAdapter adapter; // адаптер сервера баз данных #endregion Fields #region Constructors /// <summary> /// инициализирует новый экземпляр класса /// </summary> /// <param name="_adapter">Адаптер для сервреа баз данных</param> public DataBaseProvider(DataBaseAdapter _adapter) { if (_adapter != null) { adapter = _adapter; } }
private long lastTime; // последнее добавленное значение времени в таблицу #endregion Fields #region Constructors /// <summary> /// Инициализирует новый экземпляр класса /// </summary> /// <param name="Adapter">Адаптер БД</param> internal t_measuring(DataBaseAdapter Adapter) { lastId = -1; lastDept = -1; lastTime = 0; adapter = Adapter; }
private DataBaseStructure structure = null; // хранить структуру БД #endregion Fields #region Constructors /// <summary> /// Инициализирует новый экземпляр класса /// </summary> public DataBase(DataBaseAdapter adap) { adapter = adap; structure = new DataBaseStructure(); parameters = new DataBaseParameters(1024); saver = new DataBaseSaver(adapter, parameters); }
private DataBaseState state; // текущее состояние БД #endregion Fields #region Constructors /// <summary> /// Инициализирует новый экземпляр класса /// </summary> public DataBaseManager() { mutex = new Mutex(); state = DataBaseState.Default; adapter = new DataBaseAdapter(); server = new DataBaseServer(adapter); dataBase = new DataBase(adapter); server = new DataBaseServer(adapter); }
/// <summary> /// Инициализирует новый экземпляр класса /// </summary> /// <param name="info">Объект System.Runtime.Serialization.SerializationInfo для извлечения данных.</param> /// <param name="context">Целевое местоположение сериализации.</param> protected DataBaseManager(SerializationInfo info, StreamingContext context) { mutex = new Mutex(); state = DataBaseState.Default; adapter = new DataBaseAdapter(); adapter.UserID = info.GetString("UserID"); adapter.Password = info.GetString("Password"); server = new DataBaseServer(adapter); dataBase = new DataBase(adapter); server = new DataBaseServer(adapter); }
protected ReaderWriterLockSlim t_slim; // синхронизатор таймера #endregion Fields #region Constructors /// <summary> /// Инициализирует новый экземпляр класса /// </summary> public DataBaseManager() { state = DBState.Default; adapter = new DataBaseAdapter(".", "", "sa", ""); provider = new DataBaseProvider(adapter); saver = new DataBaseSaver(); is_valid = false; timer = new Timer(TimerCallback, null, 0, 5000); slim = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); t_slim = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); DataBase.Initialize(); }
/// <summary> /// Виртуализируем таблицу времени /// </summary> /// <param name="Adapter">Объет определяющий подключение к БД</param> /// <returns>В случае успеха виртуализировнная таблица времени, в противном случае null</returns> public static t_measuring Virtualize(DataBaseAdapter Adapter) { SqlConnection connection = null; try { connection = new SqlConnection(Adapter.ConnectionString); connection.Open(); if (connection.State == ConnectionState.Open) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = string.Format("Select * From {0} Order By id Desc", "dbo.t_measuring"); using (SqlDataReader reader = command.ExecuteReader()) { t_measuring measuring = new t_measuring(Adapter); measuring.LastId = 0; measuring.LastTime = DateTime.Now.Ticks; measuring.LastDept = 0.0f; if (reader != null) { if (reader.IsClosed == false) { while (reader.Read()) { measuring.LastId = reader.GetInt32(0); DateTime t = DateTime.FromOADate(reader.GetDouble(1)); measuring.LastTime = t.Ticks; measuring.LastDept = 0.0f; break; } } return(measuring); } else { throw new Exception("Не удалось загрузить таблицу времени из БД"); } } } } else { throw new Exception("Не удалось установить соединение с БД"); } } catch (Exception ex) { throw new Exception(ex.Message, ex); } finally { if (connection != null) { if (connection.State == ConnectionState.Open) { connection.Close(); } connection.Dispose(); } } }
/// <summary> /// Виртуализируем таблицу времени /// </summary> /// <param name="Adapter">Объет определяющий подключение к БД</param> /// <returns>В случае успеха виртуализировнная таблица времени, в противном случае null</returns> public static t_measuring Virtualize(DataBaseAdapter Adapter) { SqlConnection connection = null; try { connection = new SqlConnection(Adapter.ConnectionString); connection.Open(); if (connection.State == ConnectionState.Open) { SqlCommand command = connection.CreateCommand(); command.CommandText = string.Format("Select * From {0} Order By id Desc", "dbo.t_measuring"); SqlDataReader reader = command.ExecuteReader(); t_measuring measuring = new t_measuring(Adapter); measuring.LastId = 0; measuring.LastTime = DateTime.Now.Ticks; measuring.LastDept = 0.0f; if (reader != null) { if (reader.IsClosed == false) { while (reader.Read()) { measuring.LastId = reader.GetInt32(0); DateTime t = DateTime.FromOADate(reader.GetDouble(1)); measuring.LastTime = t.Ticks; measuring.LastDept = 0.0f; break; } } return measuring; } else throw new Exception("Не удалось загрузить таблицу времени из БД"); } else throw new Exception("Не удалось установить соединение с БД"); } catch (Exception ex) { throw new Exception(ex.Message, ex); } finally { if (connection != null) { if (connection.State == ConnectionState.Open) { connection.Close(); } connection.Dispose(); } } }
private DataBaseAdapter adapter = null; // предоставляет сервисные функции и методы для работу с сервером БД #endregion Fields #region Constructors /// <summary> /// Инициализирует новый экземпляр класса /// </summary> /// <param name="Adapter">Адаптер подключения к серверу</param> public DataBaseServer(DataBaseAdapter Adapter) { adapter = Adapter; }
/// <summary> /// Инициализировать базу данных /// </summary> /// <param name="_adapter">Алаптер базы данных</param> protected void InitializeDataBase(DataBaseAdapter _adapter) { SqlConnection connection = null; try { connection = new SqlConnection(_adapter.ConnectionString); connection.Open(); if (connection.State == ConnectionState.Open) { using (SqlCommand command = new SqlCommand(sql_query_insert_first_param, connection)) { command.ExecuteNonQuery(); } } else throw new Exception("Не удалось подключиться к серверу.Таблицы не созданы."); } catch (Exception ex) { throw new Exception(ex.Message, ex); } finally { if (connection != null) { if (connection.State == ConnectionState.Open) { connection.Close(); SqlConnection.ClearPool(connection); } connection.Dispose(); } } }
/// <summary> /// Создать индекс для таблицы времени /// </summary> /// <param name="_adapter">Адаптер БД</param> protected void CreateInsexInTimeTable(DataBaseAdapter _adapter) { SqlConnection connection = null; try { connection = new SqlConnection(_adapter.ConnectionString); connection.Open(); if (connection.State == ConnectionState.Open) { using (SqlCommand command = new SqlCommand("CREATE INDEX time_index ON dbo.t_measuring(val_Time)", connection)) { command.ExecuteNonQuery(); } } else throw new Exception("Не удалось подключиться к серверу.Таблицы не созданы."); } catch (Exception ex) { throw new Exception(ex.Message, ex); } finally { if (connection != null) { if (connection.State == ConnectionState.Open) { connection.Close(); SqlConnection.ClearPool(connection); } connection.Dispose(); } } }
/// <summary> /// Создать базу данных /// </summary> /// <param name="dataBaseName">Имя создаваемой базы данных</param> public void CreateDataBase(string dataBaseName) { SqlConnection connection = null; try { connection = new SqlConnection(adapter.ConnectionStringToServer); connection.Open(); if (connection.State == ConnectionState.Open) { string sql_query = string.Format("CREATE DATABASE {0}", dataBaseName); SqlCommand cmd = connection.CreateCommand(); cmd.CommandText = sql_query; cmd.ExecuteNonQuery(); // -------- тут необходимо создать таблицы -------- DataBaseAdapter _adapter = new DataBaseAdapter(adapter.DataSource, dataBaseName, adapter.UserID, adapter.Password); InsertTable(_adapter, sql_query_create_main_table); // создаем главную таблицу БД InsertTable(_adapter, sql_query_create_time_table); // создаем таблицу времен параметров в БД CreateInsexInTimeTable(_adapter); // создать индекс для таблицы времен InsertTable(_adapter, sql_query_create_param_table); // создаем служебную таблицу для БД InitializeDataBase(_adapter); // инициализировать базу данных } else throw new Exception("Не удалось подключиться к серверу."); } catch (Exception ex) { throw new Exception(ex.Message, ex); } finally { if (connection != null) { if (connection.State == ConnectionState.Open) { connection.Close(); SqlConnection.ClearPool(connection); } connection.Dispose(); } } }
/// <summary> /// Инициализировать /// </summary> /// <param name="adap">Адаптер БД</param> /// <param name="parames">Параметры загруженные из БД</param> internal void Inialize(DataBaseAdapter adap, DataBaseParameters parames) { adapter = adap; parameters = parames; }
private int timeToBuffer = 1000; // частота сохранения параметров в БД #endregion Fields #region Constructors /// <summary> /// Инициализирует новый класс /// </summary> /// <param name="Adapted">Адаптер БД</param> public DataBaseSaver(DataBaseAdapter Adapted, DataBaseParameters Parameters) { adapter = Adapted; parameters = Parameters; in_out_mutex = new Mutex(); callBackMutex = new Mutex(); input = new List<DataBaseParameterValue>(); output = new List<DataBaseParameterValue>(); callBackMutex = new Mutex(); timer = new Timer(TimerCallback, null, Timeout.Infinite, timeToBuffer); mutex = new Mutex(); }
private DataBaseAdapter adapter = null; // предоставляет сервисные функции и методы для работу с сервером БД /// <summary> /// Инициализирует новый экземпляр класса /// </summary> /// <param name="Adapter">Адаптер подключения к серверу</param> public DataBaseServer(DataBaseAdapter Adapter) { adapter = Adapter; }