コード例 #1
0
        /// <summary>
        /// 删除队列
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="mqNodeConn"></param>
        /// <param name="id"></param>
        /// <param name="partitionId"></param>
        /// <returns></returns>
        public int DeleteMqQueue(DbConn conn, DbConn mqNodeConn, int id, int partitionId)
        {
            int flag = this.IsDeleted(conn, mqNodeConn, id, partitionId);

            if (flag != 1)
            {
                return(flag);
            }
            try
            {
                conn.BeginTransaction();
                if (this.DeletePartition(conn, partitionId))
                {
                    if (!partitionDal.UpdateIsUsed(conn, 0, partitionId))
                    {
                        throw new Exception("更新出错");
                    }
                }
                else
                {
                    throw new Exception("删除出错");
                }
                conn.Commit();
            }
            catch (Exception ex)
            {
                conn.Rollback();
                XXF.Log.ErrorLog.Write("删除MQ队列出错:", ex);
                return(-1);
            }
            return(1);
        }
コード例 #2
0
 public ActionResult Delete(int id)
 {
     try
     {
         using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
         {
             try
             {
                 conn.Open();
                 conn.BeginTransaction();
                 var countofpatitions = dal.GetCountOfPartition(conn, id);
                 if (countofpatitions > 0)
                 {
                     throw new Exception("请先删除该队列全部分区后删除该队列");
                 }
                 new tb_mqpath_dal().Delete(conn, id);
                 conn.Commit();
                 return(Json(new { code = 1, msg = "删除成功" }));
             }
             catch (Exception exp)
             {
                 conn.Rollback();
                 throw exp;
             }
         }
     }
     catch (Exception exp)
     {
         return(Json(new { code = -1, msg = exp.Message }));
     }
 }
コード例 #3
0
        public ActionResult ClearNotOnLineByClientID(int id, int mqpathid)
        {
            try
            {
                using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
                {
                    try
                    {
                        conn.Open();
                        conn.BeginTransaction();
                        var item = new tb_consumer_partition_dal().Get(conn, id);
                        new tb_consumer_dal().DeleteNotOnLineByClientID(conn, item.consumerclientid, 20);

                        conn.Commit();
                    }
                    catch (Exception exp)
                    {
                        conn.Rollback();
                        throw exp;
                    }

                    return(Json(new { code = 1, msg = "清理完毕" }));
                }
            }
            catch (Exception e)
            {
                return(Json(new { code = -1, msg = e.Message }));
            }
        }
コード例 #4
0
 public MsTrans BeginTrans()
 {
     if (DbTrans == null)
     {
         DbTrans = DbConn.BeginTransaction();
     }
     return(new MsTrans(this));
 }
コード例 #5
0
 /// <summary>
 ///
 /// </summary>
 public IDbCommand BeginTransaction()
 {
     if (dbConn != null)
     {
         return(dbConn.BeginTransaction());
     }
     return(null);
 }
コード例 #6
0
 public ActionResult Add(int nodeid, int count)
 {
     try
     {
         using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
         {
             conn.Open();
             try
             {
                 conn.BeginTransaction();
                 int        r                = 0;
                 var        partitons        = new tb_partition_dal().GetPageList(conn, "", nodeid, -1, 1, 100, ref r);
                 List <int> usedpartitionids = new List <int>();
                 foreach (var d in partitons)
                 {
                     if (!usedpartitionids.Contains(d.partitionid))
                     {
                         usedpartitionids.Add(d.partitionid);
                     }
                 }
                 List <int> canusepartitionids = new List <int>();
                 for (var i = 1; i < 100; i++)
                 {
                     var partition = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetPartitionID(new XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionIDInfo()
                     {
                         DataNodePartition = nodeid, TablePartition = i
                     });
                     if (!usedpartitionids.Contains(partition))
                     {
                         canusepartitionids.Add(partition);
                     }
                 }
                 for (int i = 0; i < count; i++)
                 {
                     tb_partition_model model = new tb_partition_model();
                     model.isused      = false;
                     model.partitionid = canusepartitionids[i];
                     dal.AddPartition(conn, model);
                 }
                 conn.Commit();
             }
             catch (Exception exp)
             {
                 conn.Rollback();
                 throw exp;
             }
         }
         return(RedirectToAction("index", new { nodeId = nodeid }));
     }
     catch (Exception exp)
     {
         ModelState.AddModelError("Error", "添加失败" + exp.Message);
         return(View());
     }
 }
コード例 #7
0
ファイル: SqlExecuteXY.cs プロジェクト: luyikk/SqlExecuteXY
        /// <summary>
        ///     开始一个事务
        /// </summary>
        public void BeginTrans()
        {
            if (DbConn.State == ConnectionState.Closed)
            {
                DbConn.Open();
            }

            Trans = DbConn.BeginTransaction();
            Command.Transaction = Trans;
            TransStats          = 1;
        }
コード例 #8
0
ファイル: MainWindow.xaml.cs プロジェクト: Kevin9567/SCMT
        // 开始解析;
        private void parseFile_Click(object sender, RoutedEventArgs e)
        {
            List <Event> le = new List <Event>();

            byte[]     bytes = { 0x06, 0xD6, 0x12, 0x09, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0xF0, 0x5A, 0xC4, 0x95, 0x6C, 0x1D, 0x36, 0xE3, 0xB4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x5C, 0x00 };
            IDbCommand sessionSqlCmd;
            DbOptions  opts = new DbOptions();

            opts.ConnStr  = DbConnSqlite.GetConnectString(DbConnProvider.DefaultSqliteDatabaseName);;
            opts.ConnType = CDLBrowser.Parser.DatabaseMgr.DbType.SQLite;
            DbConn dbconn = new DbConn(opts);
            int    ret    = dbconn.CheckDatabaseTable(typeof(Event));

            if (ret < 0)
            {
                return;
            }

            /*
             * dbconn.ExcuteNonQuery("PRAGMA synchronous = OFF");
             * dbconn.ExcuteNonQuery("PRAGMA journal_mode = MEMORY");
             */

            sessionSqlCmd = dbconn.BeginTransaction();
            string      sql    = string.Empty;
            EventParser parser = new EventParser();

            parser.Version = "1.3.06659";

            EventParserManager.Instance.AddEventParser(parser.Version, parser);
            Event newe = ParseEvent(bytes, "1.3.06659");

            le.Add(newe);
            sql = dbconn.CreateInsertSqlFromObject(typeof(Event), newe, "Event", true);
            //  dbconn.ExcuteByTrans(sql, sessionSqlCmd);

            IDbDataParameter dbparameterRaw  = null;
            IDbDataParameter dbparameterBody = null;

            dbparameterRaw  = new SQLiteParameter("@RawData", newe.RawData);
            dbparameterBody = new SQLiteParameter("@MsgBody", newe.MsgBody);

            IDbDataParameter[] paramsArray = new IDbDataParameter[2];
            paramsArray[0] = dbparameterRaw;
            paramsArray[1] = dbparameterBody;
            dbconn.ExecuteWithParamtersByTrans(sql, paramsArray, sessionSqlCmd);


            dbconn.CommitChanges(sessionSqlCmd);
            dbconn.Close();
        }
コード例 #9
0
        public ActionResult Delete(int id)
        {
            try
            {
                tb_mqpath_partition_model model = null;
                using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
                {
                    try
                    {
                        conn.Open();
                        conn.BeginTransaction();
                        model = pathPartitionDal.Get(conn, id);
                        if (model == null)
                        {
                            throw new Exception("分区不存在");
                        }

                        if (model.state == (int)XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.EnumMqPathPartitionState.Running)
                        {
                            throw new Exception("正在运行中");
                        }
                        if (model.partitionindex != new tb_mqpath_partition_dal().GetMaxPartitionIndex(conn, model.mqpathid))
                        {
                            throw new Exception("分区请优先移除最大的分区顺序的分区");
                        }
                        //移除该分区的所有消费者信息
                        new tb_consumer_partition_dal().Delete2(conn, model.partitionid);
                        pathPartitionDal.Delete(conn, id);
                        new tb_partition_dal().UpdateIsUsed(conn, 0, model.partitionid);
                        conn.Commit();
                    }
                    catch (Exception exp)
                    {
                        conn.Rollback();
                        throw exp;
                    }
                }
                ReStartQuque(model.mqpathid);
                return(Json(new { code = 1, msg = "成功" }));
            }
            catch (Exception e)
            {
                return(Json(new { code = -1, msg = e.Message }));
            }
        }
コード例 #10
0
        public virtual void ReStartQuque(int mqpathid)
        {
            tb_mqpath_model model;

            using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
            {
                try
                {
                    conn.Open();
                    conn.BeginTransaction();
                    model = new tb_mqpath_dal().Get(conn, mqpathid);
                    new tb_mqpath_dal().UpdateLastUpdateTime(conn, mqpathid);
                    conn.Commit();
                }
                catch (Exception exp)
                {
                    conn.Rollback();
                    throw exp;
                }

                SendCommandToRedistReStart(mqpathid, EnumCommandReceiver.All);
            }
        }
コード例 #11
0
        public ActionResult Delete(int id, int mqpathid)
        {
            try
            {
                using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
                {
                    try
                    {
                        conn.Open();
                        conn.BeginTransaction();

                        var item = new tb_consumer_partition_dal().Get(conn, id);
                        new tb_consumer_dal().DeleteNotOnLineByClientID(conn, item.consumerclientid, 20);
                        var consumer = new tb_consumer_dal().GetByTempId(conn, item.lastconsumertempid);
                        if (consumer != null && consumer.tempid == 0)
                        {
                            throw new Exception("当前消费者未处于正常离线状态,若是非正常断线状态,可以在20s超时后尝试");
                        }
                        new tb_consumer_partition_dal().Delete(conn, id);
                        conn.Commit();
                    }
                    catch (Exception exp)
                    {
                        conn.Rollback();
                        throw exp;
                    }
                }
                this.SendCommandToRedistReStart(mqpathid, XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.EnumCommandReceiver.Consumer);
                return(Json(new { code = 1, msg = "删除成功" }));
            }

            catch (Exception e)
            {
                return(Json(new { code = -1, msg = e.Message }));
            }
        }
コード例 #12
0
ファイル: CommonDAL.cs プロジェクト: fshm1909/Cms
 /// <summary>
 /// 开始数据库事务
 /// </summary>
 /// <returns></returns>
 public IDbTransaction BeginTransaction()
 {
     return(DbConn.BeginTransaction());
 }
コード例 #13
0
 public ActionResult Add(tb_mqpath_partition_model model)
 {
     try
     {
         using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage))
         {
             try
             {
                 conn.Open();
                 conn.BeginTransaction();
                 model.state          = (byte)XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.EnumMqPathPartitionState.Running;
                 model.partitionindex = new tb_mqpath_partition_dal().GetMaxPartitionIndexOfMqPath(conn, model.mqpathid) + 1;
                 if (new tb_mqpath_dal().Get(conn, model.mqpathid) == null)
                 {
                     throw new Exception("无法找到队列");
                 }
                 if (new tb_mqpath_partition_dal().GetByPartitionId(conn, model.partitionid) != null)
                 {
                     throw new Exception("分区已被使用");
                 }
                 if (new tb_mqpath_partition_dal().CheckMaxPartitionIndexOfMqPathIsRunning(conn, model.mqpathid) == false)
                 {
                     throw new Exception("最后的分区未处于正常使用状态,若分区正在待删状态,请删除完毕后新增分区。");
                 }
                 if (new tb_mqpath_partition_dal().Add2(conn, model))
                 {
                     new tb_partition_dal().UpdateIsUsed(conn, 1, model.partitionid);
                     var partitioninfo = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetPartitionIDInfo(model.partitionid);
                     //创建3天的表
                     var serverdate = conn.GetServerDate().Date;
                     for (int i = 0; i < 3; i++)
                     {
                         var currentdate = serverdate.AddDays(i);
                         var tablename   = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetTableName(partitioninfo.TablePartition, currentdate);//
                         SqlHelper.ExcuteSql(DataConfig.DataNodeParConn(partitioninfo.DataNodePartition + ""), (c) =>
                         {
                             bool exsit = c.TableIsExist(tablename);
                             if (exsit != true)
                             {
                                 string cmd = DataConfig.MQCreateTableSql.Replace("{tablepartiton}", XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.PartitionNameRule(partitioninfo.TablePartition))
                                              .Replace("{daypartition}", currentdate.ToString("yyMMdd")).Replace("{datanodepartiton}", XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.PartitionNameRule(partitioninfo.DataNodePartition));
                                 c.ExecuteSql(cmd, new List <XXF.Db.ProcedureParameter>());
                             }
                         });
                     }
                     conn.Commit();
                 }
                 else
                 {
                     throw new Exception("更新错误");
                 }
             }
             catch (Exception exp)
             {
                 conn.Rollback();
                 throw exp;
             }
         }
         ReStartQuque(model.mqpathid);
         return(RedirectToAction("index"));
     }
     catch (Exception e)
     {
         ModelState.AddModelError("Error", e.Message);
         return(View(model));
     }
 }
コード例 #14
0
        private void btnInicio_Click(object sender, EventArgs e)
        {
            //Instanciar nova conexão
            DbConn dbHnd = new DbConn();

            try
            {
                //Abrir Conexão
                dbHnd.OpenConnection();

                //Fechar Conexão
                dbHnd.CloseConnection();

                dbHnd.OpenConnection();

                dbHnd.ExecuteNonQuery("INSERT");
                dbHnd.ExecuteNonQuery("UPDATE");
                dbHnd.ExecuteNonQuery("DELETE");

                int resultInt = dbHnd.InsertGetInt32Key("INSERT", "cd_campo");

                long resultLong = dbHnd.InsertGetKey("INSERT", "cd_campo");

                dbHnd.AddParameter("DsChave", "Teste da Chave");
                dbHnd.ExecuteNonQuery("INSERT INTO CHAVE (ds_chave) VALUES (" + dbHnd.GetSqlParam("DsChave") + ")");

                try
                {
                    dbHnd.BeginTransaction();

                    dbHnd.ExecuteNonQuery("INSERT");
                    dbHnd.ExecuteNonQuery("INSERT");
                    dbHnd.ExecuteNonQuery("INSERT");

                    dbHnd.Commit();
                }
                catch
                {
                    dbHnd.Rollback();
                }

                //Tempo em segundos
                dbHnd.CommandTimeout = 60;
                dbHnd.ExecuteNonQuery("INSERT");

                DbDataReader dbReader = dbHnd.ExecuteReader("SELECT");
                while (dbReader.Read())
                {
                    int    codigo = int.Parse(dbReader["cd_contato"].ToString());
                    String nome   = dbReader["ds_contato"].ToString();

                    //NÃO PERMITIDO, trabalha conectado com o banco
                    //dbHnd.ExecuteNonQuery("INSERT");
                }
                dbReader.Dispose();

                DataSet ds = dbHnd.FillDataSet("SELECT");
                foreach (DataRow dRow in ds.Tables[0].Rows)
                {
                    int    codigo = int.Parse(dRow["cd_contato"].ToString());
                    String nome   = dRow["ds_contato"].ToString();

                    //Permitido, trabalha desconectado do banco
                    dbHnd.ExecuteNonQuery("INSERT");
                }

                DataRow dRowLinha = dbHnd.FillDataRow("SELECT cd_contato, ds_contato FROM CONTATO WHERE cd_contato = 1");
                if (dRowLinha != null)
                {
                    int    codigo = int.Parse(dRowLinha["cd_contato"].ToString());
                    String nome   = dRowLinha["ds_contato"].ToString();
                }

                object objNomeContato = dbHnd.ExecuteScalar("SELECT ds_contato FROM CONTATO WHERE cd_contato = 1");
                if (objNomeContato != null)
                {
                    String nome = objNomeContato.ToString();
                }

                dbHnd.CloseConnection();
            }
            finally
            {
                //Sempre utilizar finally e Dispose para "matar" a conexão
                dbHnd.Dispose();
            }
        }