예제 #1
0
 /// <summary>
 /// Заполение DataTable в зависимости от введённого SQL запроса
 /// </summary>
 /// <param name="SQL_Select_Query">Переменная запроса SQL</param>
 public Table_Class(string SQL_Select_Query)
 {
     command.Notification = null;              //Отключение оповещений у команды
     command.CommandText  = SQL_Select_Query;  //Присвение SQL запроса SQLCommand
     Dependency.AddCommandDependency(command); //Присвоение команды в связку
     //прослушивания
     try
     {
         //Запуск прослушивания
         SqlDependency.Start(Configuration_class.connection.ConnectionString);
         //Открытие подключения
         Configuration_class.connection.Open();
         //Записть данных в табличном виде в виртулальную таблицу
         table.Load(command.ExecuteReader());
     }
     catch (Exception ex)
     {
         //Вывод сообщения об ошибке
         if (ex.Message != "Подключение не было закрыто. Подключение открыто." & ex.Message != "Недопустимая попытка вызвать MetaData при закрытом устройстве чтения.")
         {
             System.Windows.Forms.MessageBox.Show(ex.Message);
         }
     }
     finally
     {
         //Закрытие подключения
         Configuration_class.connection.Close();
     }
 }
예제 #2
0
파일: Class1.cs 프로젝트: Artemka-py/MDK
 /// <summary>
 /// Заполнение DataTable в зависимости от введеного SQL запроса
 /// </summary>
 /// <param name="SQL_Select_Query"></param>
 public Table_Class(String SQL_Select_Query)
 {
     command.Notification = null;              //Отключение уведомлений
     command.CommandText  = SQL_Select_Query;  //Присвоение SQL запроса SqlCommand
     Dependency.AddCommandDependency(command); //Присвоение команд в связку
     //прослушивание
     try
     {
         //Запуск прослушиания
         SqlDependency.Start(Configuration_class.connection.ConnectionString);
         //Открытия подключения
         Configuration_class.connection.Open();
         //Запись данных в табличном виде в вирт. табл.
         table.Load(command.ExecuteReader());
     }
     catch (Exception ex)
     {
         //Сообщение об ошибке
         System.Windows.Forms.MessageBox.Show(ex.Message);
     }
     finally
     {
         //Закрытие подключения
         Configuration_class.connection.Close();
     }
 }
        public void AddCommandDependency()
        {
            SqlDependency sqlDependency = new SqlDependency();
            SqlCommand    sqlCommand    = new SqlCommand("command");

            sqlDependency.AddCommandDependency(sqlCommand);
        }
예제 #4
0
 /// <summary>
 /// 设置具有SqlChangeMonitor策略的CacheItemPolicy(绝对或相对过期时间为分钟)
 /// </summary>
 /// <param name="connStr"></param>
 /// <param name="sql"></param>
 /// <param name="cacheTime"></param>
 /// <param name="slidingExpiration"></param>
 /// <returns></returns>
 private CacheItemPolicy SetSqlPolicy(string connStr, string sql, int?cacheTime = null, int?slidingExpiration = null)
 {
     using (SqlConnection conn = new SqlConnection(connStr))
     {
         using (SqlCommand command = new SqlCommand(sql, conn))
         {
             command.Notification = null;
             conn.Open();
             var dependency = new SqlDependency(command);
             dependency.AddCommandDependency(command);
             var monitor = new SqlChangeMonitor(dependency);
             var policy  = new CacheItemPolicy();
             policy.ChangeMonitors.Add(monitor);
             command.ExecuteScalar();
             if (cacheTime.HasValue)
             {
                 policy.AbsoluteExpiration = DateTime.Now.AddMinutes(cacheTime.Value);
             }
             if (slidingExpiration.HasValue)
             {
                 policy.SlidingExpiration = TimeSpan.FromMinutes(slidingExpiration.Value);
             }
             return(policy);
         }
     }
 }
        public void Set(string forUser, IEnumerable <Order> orders)
        {
            var    policy  = new CacheItemPolicy();
            string connStr = ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;

            SqlDependency.Start(connStr);
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand command = new SqlCommand("Select * From Orders", conn))
                {
                    command.Notification = null;

                    SqlDependency dep = new SqlDependency();

                    dep.AddCommandDependency(command);

                    conn.Open();

                    SqlChangeMonitor monitor = new SqlChangeMonitor(dep);

                    policy.ChangeMonitors.Add(monitor);
                }

                cache.Set(prefix + forUser, orders, policy);
            }
        }
예제 #6
0
            protected override DbCommand CreateDbCommand()
            {
                var command = _sqlConnection.CreateCommand();

                _sqlDependency.AddCommandDependency(command);
                return(command);
            }
예제 #7
0
 /// <summary>
 /// Зполнение DataTAble в зависимосьти от введенного SQL запроса
 /// </summary>
 /// <param name="SQL_Select_Query"></param>
 public Table_Class(string SQL_Select_Query)
 {
     command.Notification = null;              //отключение оповещений у команды
     command.CommandText  = SQL_Select_Query;  //присвоение SQL запроса
     Dependency.AddCommandDependency(command); //присвоение команды в связку
     //прослушивание
     try
     {
         //запуск прослушивания
         SqlDependency.Start(Configuration_class.connection.ConnectionString);
         //открытия подключения
         Configuration_class.connection.Open();
         // записать данные в табличном виде в виртуальной таблице
         table.Load(command.ExecuteReader());
     }
     catch (Exception ex)
     {
         //Вывод сообщения от ошибке
         System.Windows.Forms.MessageBox.Show(ex.Message);
     }
     finally
     {
         //Закрытие подключения
         Configuration_class.connection.Close();
     }
 }
예제 #8
0
        /// <summary>
        /// 监视表的数据
        /// </summary>
        private static void MonitorItem(string tableName)
        {
            var           conn = new SqlConnection(SqlServerOnChangeNotice.connectionString);
            SqlDataReader dr   = null;
            SqlCommand    cmd  = null;

            try
            {
                conn.Open();
                cmd             = conn.CreateCommand();
                cmd.CommandText = @"select c.name  from sys.columns c,sys.objects o
                                    where 
                                    c.object_id=o.object_id and
                                    o.name='" + tableName + "'";

                List <string> columns = new List <string>();
                using (SqlDataReader colsdr = cmd.ExecuteReader())
                {
                    while (colsdr.Read())
                    {
                        columns.Add(colsdr["name"].ToString());
                    }
                }
                string cols = string.Join(",", columns.ToArray());
                cols = cols.TrimEnd(",".ToCharArray());

                cmd.CommandText = "SELECT " + cols + " FROM dbo." + tableName;
                SqlDependency dependency = new SqlDependency();
                dependency.AddCommandDependency(cmd);
                dic.Add(dependency.Id, tableName);
                dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
                dr = cmd.ExecuteReader();
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                    dr.Dispose();
                    dr = null;
                }
                if (cmd != null)
                {
                    cmd.Dispose();
                    cmd = null;
                }
                if (conn != null)
                {
                    if (conn.State != System.Data.ConnectionState.Closed)
                    {
                        conn.Close();
                    }
                    conn.Dispose();
                    conn = null;
                }
            }
        }
예제 #9
0
        //public void dbEnter(string login, string password)
        //{
        //    command.CommandText = "SELECT count(*) FROM [dbo].[Employee] " +
        //        "where [Employee_Login] = '" + login + "' and [Employee_Password] = '" +
        //            password + "'";
        //    connection.Open();
        //    IDuser = Convert.ToInt32(command.ExecuteScalar().ToString());
        //    connection.Close();
        //}

        // Функция на вывод данных из таблицы БД
        private void dtFill(DataTable table, string query)
        {
            command.Notification = null;
            Dependency.AddCommandDependency(command);
            SqlDependency.Start(connection.ConnectionString);
            command.CommandText = query;         // Кладем запрос в переменную
            connection.Open();                   // Открываем подключение
            table.Load(command.ExecuteReader()); // Считывание таблицы баз данных
            connection.Close();                  // ЗАкрываем подключение
        }
예제 #10
0
 private void DtFill(DataTable table, string query)
 {
     command.Notification = null;
     Dependency.AddCommandDependency(command);
     SqlDependency.Start(Connection.ConnectionString);
     command.CommandText = query;
     Connection.Open();
     table.Load(command.ExecuteReader());
     Connection.Close();
 }
        public void AddCommandDependencyHasChanges()
        {
            SqlDependency dep = new SqlDependency();
            SqlCommand    cmd = new SqlCommand("command");
            Type          sqlDependencyType    = typeof(SqlDependency);
            FieldInfo     dependencyFiredField = sqlDependencyType.GetField("_dependencyFired", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            dependencyFiredField.SetValue(dep, true);

            dep.AddCommandDependency(cmd);
        }
예제 #12
0
        private void dtFill(DataTable table, string query)
        {
            command.CommandText = query;

            //Технология "Real Time"
            command.Notification = null;
            Dependency.AddCommandDependency(command);
            SqlDependency.Start(Configuration_Class.connection.ConnectionString);

            Configuration_Class.connection.Open();
            table.Load(command.ExecuteReader());
            Configuration_Class.connection.Close();
        }
예제 #13
0
        public DataTable GetSQLContents()
        {
            string strDBCon    = ConfigurationManager.ConnectionStrings["SQLServer"].ToString();
            string sqlFilePath = ConfigurationManager.AppSettings["SQLFile"].ToString();
            string timeout     = ConfigurationManager.AppSettings["CacheTimeOut"].ToString();

            ObjectCache cache       = MemoryCache.Default;
            DataTable   sqlContents = cache[KEY_SQL_CONTENTS] as DataTable;

            if (sqlContents == null)
            {
                CacheItemPolicy policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(Convert.ToDouble(timeout));

                try
                {
                    SqlDependency.Start(strDBCon);
                    SqlDependency dep = new SqlDependency();

                    using (SqlConnection con = new SqlConnection(strDBCon))
                    {
                        string sql = ReadFile(sqlFilePath);

                        using (SqlCommand command = new SqlCommand(sql, con))
                        {
                            con.Open();

                            SqlDataAdapter adapter = new SqlDataAdapter(command);
                            adapter.Fill(sqlContents);

                            dep.AddCommandDependency(command);

                            policy.ChangeMonitors.Add(new SqlChangeMonitor(dep));
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                // Fetch the SQL contents.
                cache.Set(KEY_SQL_CONTENTS, sqlContents, policy);
            }

            return(sqlContents);
        }
예제 #14
0
        private void dtFill(string query, DataTable table)
        {
            //try
            //{
            command.Notification = null;
            command.CommandText  = query;
            dependency.AddCommandDependency(command);
            SqlDependency.Start(sqlConnection.ConnectionString);
            sqlConnection.Open();
            table.Load(command.ExecuteReader());
            //}
            //catch (Exception ex)
            //{

            //}
            //finally
            //{
            sqlConnection.Close();
            //}
        }
예제 #15
0
 private void dtvFill(DataTable table, string query)
 {
     command.CommandText  = query;
     command.Notification = null;
     dependency.AddCommandDependency(command);
     try
     {
         SqlDependency.Start(Registry_Class.sqlConnection.ConnectionString);
         Registry_Class.sqlConnection.Open();
         table.Load(command.ExecuteReader());
     }
     catch (SqlException ex)
     {
         Registry_Class.error_message += "\n" + DateTime.Now.ToLongDateString() + " " + ex.Message;
     }
     finally
     {
         Registry_Class.sqlConnection.Close();
     }
 }
예제 #16
0
파일: MemCache.cs 프로젝트: sobne/Nkit
        static public bool IsInMaintenanceMode()
        {
            bool inMaintenanceMode;

            if (MemoryCache.Default["MaintenanceMode"] == null)
            {
                CacheItemPolicy policy = new CacheItemPolicy();

                string connStr = "DB CONNECTION STRING";

                SqlDependency.Start(connStr);

                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    using (SqlCommand command = new SqlCommand("Select MaintenanceMode From dbo.MaintenanceMode", conn))
                    {
                        command.Notification = null;

                        SqlDependency dep = new SqlDependency();

                        dep.AddCommandDependency(command);

                        conn.Open();

                        inMaintenanceMode = (bool)command.ExecuteScalar();

                        SqlChangeMonitor monitor = new SqlChangeMonitor(dep);

                        policy.ChangeMonitors.Add(monitor);
                    }
                }

                MemoryCache.Default.Add("MaintenanceMode", inMaintenanceMode, policy);
            }
            else
            {
                inMaintenanceMode = (bool)MemoryCache.Default.Get("MaintenanceMode");
            }

            return(inMaintenanceMode);
        }
예제 #17
0
 private void DataTableFill(DataTable table, string query)
 {
     try
     {
         table.Clear();
         command.Notification = null;
         command.CommandText  = query;
         dependency.AddCommandDependency(command);
         SqlDependency.Start(RegistryData.DBConnectionString.ConnectionString);
         RegistryData.DBConnectionString.Open();
         table.Load(command.ExecuteReader());
     }
     catch (Exception ex)
     {
         RegistryData.ErrorMessage += "\n" + DateTime.Now.ToLongDateString() + ex.Message;
     }
     finally
     {
         RegistryData.DBConnectionString.Close();
     }
 }
예제 #18
0
 public void DataTableFill(DataTable table, string query)
 {
     try
     {
         table.Clear();
         command.Notification = null;
         command.CommandText  = query;
         dependency.AddCommandDependency(command);
         SqlDependency.Start(Registry_Class.sqlConnection.ConnectionString);
         Registry_Class.sqlConnection.Open();
         table.Load(command.ExecuteReader());
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
     finally
     {
         Registry_Class.sqlConnection.Close();
     }
 }
예제 #19
0
        static void UpdateCache()
        {
            var policy = new CacheItemPolicy();

            policy.RemovedCallback = (s) => UpdateCache();

            var connectionString =
                ConfigurationManager.ConnectionStrings["Default"]
                .ConnectionString;

            SqlDependency.Start(connectionString);

            using (var conn = new SqlConnection(connectionString))
            {
                using (SqlCommand command =
                           new SqlCommand("SELECT PersonType FROM Person.Person WHERE PersonType = 'EM'",
                                          conn))
                {
                    SqlDependency sqlDependency = new SqlDependency();
                    sqlDependency.AddCommandDependency(command);

                    //sqlDependency.OnChange += (s, x) => UpdateCache();

                    ChangeMonitor sqlMonitor = new SqlChangeMonitor(sqlDependency);

                    conn.Open();
                    command.ExecuteScalar();

                    var empCount = GetCurrentEmployeeCount();
                    policy.ChangeMonitors.Add(sqlMonitor);
                    cache.Add("employee_count", empCount, policy);

                    Console.WriteLine(string.Format("Updated Employee count: {0}", empCount));
                }
            }
        }
예제 #20
0
        public bool IsCacheValidForProducts()
        {
            bool isValid;

            if (MemoryCache.Default["OwnMonitoring"] == null)
            {
                string          connectionString = ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
                CacheItemPolicy policy           = new CacheItemPolicy();
                SqlDependency.Start(connectionString);

                using (var connection = new SqlConnection(connectionString))
                    using (var command = new SqlCommand("select count(*) from [Northwind].[dbo].[Products]", connection))
                    {
                        command.Notification = null;
                        SqlDependency dependency = new SqlDependency();
                        dependency.AddCommandDependency(command);

                        connection.Open();

                        isValid = ((int)command.ExecuteScalar() == rowCount);

                        SqlChangeMonitor monitor = new SqlChangeMonitor(dependency);
                        policy.ChangeMonitors.Add(monitor);

                        connection.Close();
                    }

                MemoryCache.Default.Add("OwnMonitoring", isValid, policy);
            }
            else
            {
                isValid = (bool)MemoryCache.Default.Get("OwnMonitoring");
            }

            return(isValid);
        }
예제 #21
0
 ///<summary>
 ///Заполнение таблицы в зависимости от запроса
 ///</summary>
 ///<param_name="SQL_Select_Querry">Переменная запроса</param_name>
 public Table_Class(string SQL_Select_Querry)
 {
     command.Notification = null;              //Отключение оповещений для прослушивания
     command.CommandText  = SQL_Select_Querry; //Перевод строки запроса в комманду
     Dependency.AddCommandDependency(command); //Прослушивание БД по команде
     try
     {
         //Запуск прослушивания
         SqlDependency.Start(Configuration_class.connection.ConnectionString);
         //Открытие подключения
         Configuration_class.connection.Open();
         //Запись данных в таблицу
         table.Load(command.ExecuteReader());
     }
     catch (Exception ex)
     {
         //Вывод сообщения об ошибке
         System.Windows.Forms.MessageBox.Show(ex.Message);
     }
     finally
     {
         Configuration_class.connection.Close();
     }
 }
        public void AddCommandDependencyNull_Throws()
        {
            SqlDependency         sqlDependency = new SqlDependency();
            ArgumentNullException ex            = Assert.Throws <ArgumentNullException>(() => sqlDependency.AddCommandDependency(null));

            Assert.Contains("null", ex.Message, StringComparison.OrdinalIgnoreCase);
        }