/// <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); }
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 })); } }
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 })); } }
public MsTrans BeginTrans() { if (DbTrans == null) { DbTrans = DbConn.BeginTransaction(); } return(new MsTrans(this)); }
/// <summary> /// /// </summary> public IDbCommand BeginTransaction() { if (dbConn != null) { return(dbConn.BeginTransaction()); } return(null); }
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()); } }
/// <summary> /// 开始一个事务 /// </summary> public void BeginTrans() { if (DbConn.State == ConnectionState.Closed) { DbConn.Open(); } Trans = DbConn.BeginTransaction(); Command.Transaction = Trans; TransStats = 1; }
// 开始解析; 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(); }
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 })); } }
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); } }
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 })); } }
/// <summary> /// 开始数据库事务 /// </summary> /// <returns></returns> public IDbTransaction BeginTransaction() { return(DbConn.BeginTransaction()); }
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)); } }
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(); } }