public ActionResult QueryExecutor(QueryExecutorVm vm) { //Find user AppUser user = _userManager.FindById(User.Identity.GetUserId()); DataBaseInfo foundDb = DataBasesManager.GetDbInfos(user.Id).Single(m => m.Id == vm.DbId); //TODO: Think, if i need different executors for each DBMS or not using (IQueryExecutor executor = new SqlServerExecutor(foundDb.ConnectionString)) { vm.DataTable = executor.ExecuteQueryAsDataTable(vm.Query); } return(PartialView("QueryResults", vm.DataTable)); }
public ActionResult ExecuteQuery(int id) { //Find user AppUser user = _userManager.FindById(User.Identity.GetUserId()); //Find DB DataBaseInfo foundDb = DataBasesManager.GetDbInfos(user.Id).Single(db => db.Id == id); QueryExecutorVm vm = new QueryExecutorVm { DbId = id, DbName = foundDb.Name }; return(PartialView("~/Views/Query/QueryExecutor.cshtml", vm)); }
public ActionResult QueryExecutorWithCs(QueryExecutorVm vm) { var connectionString = Request["conStr"].Trim(); vm.DataTable = new DataTable(); var errorDataColumn = new DataColumn("FastSqlQueryErrMessages", typeof(string)); vm.DataTable.Columns.Add(errorDataColumn); //Check if connection string is empty if (string.IsNullOrEmpty(connectionString)) { var row = vm.DataTable.NewRow(); row[0] = "Ваша строка подключения пуста!"; vm.DataTable.Rows.Add(row); return(PartialView("QueryResults", vm.DataTable)); } //Try to establish connection IQueryExecutor executor = null; try { executor = new SqlServerExecutor(connectionString); } catch { var row = vm.DataTable.NewRow(); row[0] = "Не удалось установить соеденение."; vm.DataTable.Rows.Add(row); executor?.Dispose(); return(PartialView("QueryResults", vm.DataTable)); } //receive data vm.DataTable = executor.ExecuteQueryAsDataTable(vm.Query); executor.Dispose(); return(PartialView("QueryResults", vm.DataTable)); }