Exemple #1
0
        public IActionResult OnPostExecuteQuery(string query, string connections)
        {
            CloudQuery.Models.QueryResult qr = new Models.QueryResult();
            qr.Message = "Query execution incomplete";

            // get the connectionObject
            var conn = Newtonsoft.Json.JsonConvert.DeserializeObject <CloudQuery.Models.DBConnection>(connections);

            if (conn.DBName.StartsWith("#"))
            {
                PopulateConnectionDataFromMount(conn);
            }
            string connectionString = string.Format("Server=tcp:{0}.database.windows.net,1433;Database={1};Uid={2}@{0};Pwd={3};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;KeyStoreAuthentication=KeyVaultManagedIdentity", conn.DBServer, conn.DBName, conn.Username, conn.Password);

            if ("true".CompareTo(System.Environment.GetEnvironmentVariable("MSI")) == 0)
            {
                connectionString = string.Format("Server=tcp:{0}.database.windows.net,1433;Database={1};Uid={2}@{0};Authentication=ActiveDirectoryMsi;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30", conn.DBServer, conn.DBName, conn.Username, conn.Password);
            }
            else if ("true".CompareTo(System.Environment.GetEnvironmentVariable("ODBC_ALWAYSENCRYPTED")) == 0)
            {
                connectionString = string.Format("Server=tcp:{0}.database.windows.net,1433;Database={1};Uid={2};Authentication=ActiveDirectoryMsi;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;ColumnEncryption=Enabled;KeyStoreAuthentication=KeyVaultManagedIdentity;KeyStorePrincipalId={2}", conn.DBServer, conn.DBName, conn.Username, conn.Password);
            }

            connectionString = "Driver={ODBC Driver 17 for SQL Server};" + connectionString;
            Console.WriteLine($"ConnectionString: {connectionString}");

            try
            {
                int rowsReturned = 0;
                System.Data.DataSet ds;

                using (System.Data.Odbc.OdbcDataAdapter adapter = new System.Data.Odbc.OdbcDataAdapter(query, connectionString))
                {
                    ds           = new System.Data.DataSet();
                    rowsReturned = adapter.Fill(ds);
                }

                // only selects will return a Table of results;
                if (ds.Tables.Count == 0) // not a table
                {
                    qr.Message = "Query completed successfully";
                }
                else if (ds.Tables.Count == 1)
                {
                    // return the results
                    qr.Results = ds.Tables[0];

                    // return rowsAffected for message
                    qr.Message = string.Format("{0} rows returned.", rowsReturned);
                }
            }
            catch (Exception ex)
            {
                qr.Exception = ex;
                qr.Message   = ex.Message;
            }

            ViewData["results"] = qr;
            return(View("Index"));
        }
Exemple #2
0
        //GET: transfer/statistic
        /// <summary>
        /// 获取数据转储统计信息,这里时间为年月日,直接在表中取当天9时-第二天8时之间的所有数据。只能查询一天的数据。
        /// @param date:YYYY-MM-DD
        /// </summary>
        /// <returns></returns>
        public ActionResult statistic()
        {
            DateTime from;
            int      id = 0;

            try
            {
                from = DateTime.Parse(Request.Params.Get("date"));
                id   = int.Parse(Request.Params.Get("isubcenter"));
            }
            catch (Exception e)
            {
                return(Json(helper.DBHelper.SerializeDBReturnCode(helper.DBReturnCode.BAD_REQUEST), JsonRequestBehavior.AllowGet));
            }
            Models.QueryResult     result   = new Models.QueryResult();
            Models.Maintain        db       = new Models.Maintain();
            List <Models.Station>  stations = DAL.StationService.ListStationBySubcenterId(id);
            List <Models.M_status> datas    = DAL.TransferDataService.ListMonitorData(db, from, 1); //仅查一天的数据

            foreach (Models.Station station in stations)
            {
                Models.M_status data = datas.FirstOrDefault(i => i.STCD == station.stationId);
                Models.TransferStatisticRecord record = new Models.TransferStatisticRecord(station, data);
                result.records.Add(record);
            }
            JavaScriptSerializer jsSerializer = new JavaScriptSerializer();

            jsSerializer.MaxJsonLength = Int32.MaxValue;
            string json = jsSerializer.Serialize(result);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Exemple #3
0
        // GET:rain/realTime
        //TODO 实时降雨的查询
        public ActionResult realTime()
        {
            //DateTime from = Convert.ToDateTime(Request.Params.Get("from"));
            //DateTime to = Convert.ToDateTime(Request.Params.Get("to"));
            //string stationId = Request.Params.Get("station-id");
            //var list = new List<KeyValuePair<string, IQueryable<Models.rain>>>();
            //list.Add(new KeyValuePair<string, IQueryable<Models.rain>>("data", DAL.RainHandler.singleRainRecord(from, to, stationId)));
            //ViewData.Add("data",list);
            //ViewBag.Title = "实时降雨信息";
            //return View();

            /*显示所有站点的今日降雨*/
            #region 初始化查询条件
            DateTime today = DateTime.Now;
            //还不到8点,今日按照从昨天早上8点开始计算
            if (today.Hour <= 8)
            {
                today = today.AddDays(-1);
            }
            DateTime from = new DateTime(
                year: today.Year,
                month: today.Month,
                day: today.Day,
                hour: 8,
                minute: 0,
                second: 0
                );
            DateTime to = new DateTime(
                year: today.Year,
                month: today.Month,
                day: today.Day + 1,
                hour: DateTime.Now.Hour,
                minute: 0,
                second: 0
                );
            long?subcenterId = null;
            List <Models.Station> stations = DAL.StationHandler.station(subcenterId);
            #endregion
            //初始化查询结果
            Models.QueryResult result = new Models.QueryResult();

            //为查询结果添加表头
            result.dataTitles.Add("站号");
            result.dataTitles.Add("站名");
            result.dataTitles.Add("站类");
            result.dataTitles.Add("所在地");
            result.dataTitles.Add("累计");
            DateTime        current = DateTime.Now;
            List <DateTime> period  = new List <DateTime>();
            while (from < current)
            {
                period.Add(current);
                result.dataTitles.Add((current.AddHours(-1).Hour) + "-" + current.Hour);
                current = current.AddHours(-1);
            }
            foreach (Models.Station station in stations)
            {
                IQueryable <Models.rain> queryResult = DAL.RainHandler.singleRainRecord(from, to, station.stationId);
                //添加累计和
                Models.Record record = new Models.Record();
                decimal       sum    = queryResult.Where(r => r.datatime <= period.First() && r.datatime >= period.Last()).Sum(r => r.periodrain).Value;
                record.station = station;
                record.datas.Add(sum);
                //每个时间段都分别求出结果
                foreach (DateTime time in period)
                {
                    decimal data = queryResult.Where(r => r.datatime < time.AddHours(1) && r.datatime >= time).Sum(r => r.periodrain).Value;
                    record.datas.Add(data);
                }
                result.records.Add(record);
                ViewData.Add("table", result);
            }
            return(View());
        }