Beispiel #1
0
        /// <summary>
        /// Save a SQL request into history for later use
        /// </summary>
        /// <param name="request"></param>
        public ResponseModel SaveCommand(SQLRequest request)
        {
            if (request.Query == null)
            {
                return(new ResponseModel
                {
                    Success = true
                });
            }
            var last = GetLastCommand();

            if (last != null && last.Query == request.Query)
            {
                return(new ResponseModel
                {
                    Success = true
                });
            }
            var history = new SqlCommandHistoryModel
            {
                Query = request.Query
            };
            var response = Insert(history);

            return(response.SetMessage(response.Success
                ? T("SqlCommand_Message_CreateSuccessfully")
                : T("SqlCommand_Message_CreateFailure")));
        }
        /// <summary>
        /// Save a SQL request into history for later use
        /// </summary>
        /// <param name="request"></param>
        public ResponseModel SaveCommand(SQLRequest request)
        {
            if (request.Query == null)
            {
                return(new ResponseModel
                {
                    Success = true
                });
            }
            var last = GetLastCommand();

            if (last != null && last.Query == request.Query)
            {
                return(new ResponseModel
                {
                    Success = true
                });
            }
            var history = new SQLCommandHistoryModel
            {
                Query = request.Query
            };
            var response = Insert(history);

            return(response.SetMessage(response.Success ?
                                       _localizedResourceServices.T("AdminModule:::News:::Messages:::CreateSuccessfully:::Create news successfully.")
                : _localizedResourceServices.T("AdminModule:::News:::Messages:::CreateFailure:::Insert news failed. Please try again later.")));
        }
Beispiel #3
0
        public List <object> RequestCheck(SQLRequest sql)
        {
            string[] chacked = sql.Request.Split(' ');

            try {
                if (Select(chacked))
                {
                    return(Get(sql.Request));
                }
                else

                {
                    using (IDbConnection db = new SqlConnection(connectionString))
                    {
                        db.Execute(sql.Request);
                    }
                    var    s = GetTableName(chacked);
                    string z = "SELECT * FROM " + s;
                    return(GetData(z));
                }
            }
            catch (Exception e)
            {
                return(new List <object>());
            }
        }
Beispiel #4
0
        public ActionResult <List <object> > PostData([FromBody] SQLRequest SQLrequest)
        {
            if (SQLrequest == null)
            {
                return(BadRequest());
            }
            var response = repo.RequestCheck(SQLrequest);

            return(Ok(response));
        }
 SQLResponse MakeQuery(SQLRequest req)
 {
     try
     {
         MySqlCommand    cmd    = new MySqlCommand(req.query, sqlConnection);
         MySqlDataReader reader = cmd.ExecuteReader();
         return(new SQLResponse(reader, req.callback));
     }
     catch (Exception e)
     {
         Debug.Log(e.Message);
         return(null);
     }
 }
Beispiel #6
0
        public ActionResult Index(SQLRequest request, bool exportToFile = false)
        {
            var executor = new SQLExecutor();
            var result   = executor.Execute(request);

            if (exportToFile)
            {
                return(new FileContentResult(Encoding.UTF8.GetBytes(result.ToString()), "text/plain")
                {
                    FileDownloadName = "QueryResult.txt"
                });
            }
            return(View(result));
        }
Beispiel #7
0
        public async Task <InvokeResult <List <DataStreamResult> > > SqlQuery(string datastreamid, [FromBody] SQLRequest request)
        {
            if (request == null)
            {
                return(InvokeResult <List <DataStreamResult> > .FromError($"Empty SQL Request"));
            }

            if (String.IsNullOrEmpty(request.Query))
            {
                return(InvokeResult <List <DataStreamResult> > .FromError($"Empty Query SQL Request"));
            }

            var dataStream = await _dataStreamManager.LoadFullDataStreamConfigurationAsync(datastreamid, OrgEntityHeader, UserEntityHeader);

            if (dataStream == null)
            {
                throw new RecordNotFoundException("DataStream", datastreamid);
            }

            var connectorResult = DataStreamServices.GetConnector(dataStream.Result.StreamType.Value, _adminlogger);

            if (connectorResult == null)
            {
                return(InvokeResult <List <DataStreamResult> > .FromError($"Could not get data stream connector for: {dataStream.Result.StreamType.Value}"));
            }

            var connector = connectorResult.Result;
            await connector.InitAsync(dataStream.Result);

            return(await connector.ExecSQLAsync(request.Query, request.Parameters));
        }
Beispiel #8
0
        /// <summary>
        /// Executing a SQL query against current DB
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public SQLResult Execute(SQLRequest request)
        {
            //save executing query into history
            if (request.SaveToHistory)
            {
                _sqlCommandServices.SaveCommand(request);
            }

            //Prepare the result object based on basic information from request
            var result = new SQLResult
            {
                ConnectionString = _connection.ConnectionString,
                Query            = request.Query,
                ReadOnly         = request.ReadOnly,
                HtmlEncode       = request.HtmlEncode
            };
            var returnData = new List <DataResult>();
            var startTime  = DateTime.Now.Ticks;

            IDbTransaction transaction    = null;
            bool           openConnection = false;

            try
            {
                //open connection if needed
                if (_connection.State != ConnectionState.Open)
                {
                    _connection.Open();
                    openConnection = true;
                }
                IDbCommand command = _connection.CreateCommand();
                command.CommandText = request.Query;
                command.CommandType = CommandType.Text;
                //if executing in read only, we put all SQL statement into a DB transaction
                //then roll back after then
                if (request.ReadOnly)
                {
                    transaction         = _connection.BeginTransaction();
                    command.Transaction = transaction;
                }
                //Excuting and parse result
                IDataReader reader = command.ExecuteReader();
                if (reader != null)
                {
                    do
                    {
                        DataResult dataResult = getResult(reader);
                        if (dataResult != null)
                        {
                            returnData.Add(dataResult);
                        }
                    } while (reader.NextResult());
                    result.RecordsAffected = reader.RecordsAffected;
                }
            }
            catch (Exception ex)
            {
                result.Error = ex;
            }
            finally
            {
                //Roll back transaction if needed
                if (transaction != null)
                {
                    try
                    {
                        transaction.Rollback();
                    }
                    catch { }
                }
                //Close connection if it was opened by us
                if (openConnection)
                {
                    try
                    {
                        _connection.Close();
                    }
                    catch { }
                }
            }
            //Other properties for resutl object
            result.Tables = GetTableNames();
            long endTime = DateTime.Now.Ticks;

            result.ReturnData  = returnData;
            result.ProcessTime = (long)new TimeSpan(endTime - startTime).TotalMilliseconds;

            var defaultHistoryLength = _settingServices.GetSetting <int>(SettingNames.DefaultHistoryLength);
            var defaultHistoryStart  = _settingServices.GetSetting <int>(SettingNames.DefaultHistoryStart);

            result.Histories = _sqlCommandServices.GetHistories(defaultHistoryStart, defaultHistoryLength);
            return(result);
        }
Beispiel #9
0
        public IActionResult Post([FromBody] SQLRequest req)
        {
            var conn = new MySqlConnection("server=192.168.99.100;port=3306;user=root;password=root;database=employees");
            var cmd  = new MySqlCommand("", conn);

            // var compiler = new SqlServerCompiler();
            var compiler     = new MySqlCompiler();
            var q            = new Query(req.From);
            var paramCounter = 0;

            foreach (var literal in req.Where)
            {
                var val = literal.Values[0];
                q.Where(
                    literal.FieldName,
                    literal.Operator,
                    val.Value);
                // var p = cmd.CreateParameter();
                // p.Value = val.Value;
                // p.ParameterName = "p" + paramCounter;

                cmd.Parameters.AddWithValue("@p" + paramCounter, val.Value);
                paramCounter++;
                // .Value = val.Value
            }

            q.Limit(req.Limit);
            q.Offset(req.Offset);

            cmd.Parameters.AddWithValue("@p" + paramCounter, req.Limit);
            paramCounter++;
            if (req.Offset > 0)
            {
                cmd.Parameters.AddWithValue("@p" + paramCounter, req.Offset);
                paramCounter++;
            }

            var sql = compiler.Compile(q).Sql;

            Console.Write(sql);

            cmd.CommandText = sql;
            conn.Open();
            var resp = cmd.ExecuteReader();

            var responseList = new List <Dictionary <string, object> >();

            while (resp.Read())
            {
                var rowDict = new Dictionary <string, object>();
                for (var i = 0; i < resp.FieldCount; i++)
                {
                    rowDict.Add(resp.GetName(i), resp[i]);
                }
                responseList.Add(rowDict);
            }

            conn.Close();

            return(Ok(new SQLResponse()
            {
                ResultSet = responseList,
                Next = new SQLRequest()
                {
                    Select = req.Select,
                    From = req.From,
                    Where = req.Where,
                    OrderBy = req.OrderBy,
                    Limit = req.Limit,
                    Offset = req.Offset + req.Limit
                },
                Page = 1,
                Pages = 10,
                Count = 100
            }));
        }