Example #1
0
        public List <String> Execute(string commandParameter)
        {
            if (_connection == null)
            {
                throw new ApplicationException("Error Getting Connection");
            }

            FndPLSQLSelectCommand command = new FndPLSQLSelectCommand(_connection, _selectStatement);

            command.BindVariables.Add(
                new FndBindVariable(
                    FndBindVariableDirection.In,
                    "NAME",
                    new FndTextAttribute(string.Concat(commandParameter, "%")))
                );

            FndDataTable returnTable = command.ExecuteReader("CUSTOMER_INFO");

            var returnNames = new List <String>();

            foreach (FndDataRow item in returnTable.Rows)
            {
                returnNames.Add(item["NAME"].ToString());
            }

            return(returnNames);
        }
        /// <summary>
        /// Write query results to json string or file
        /// </summary>
        /// <param name="command"></param>
        /// <param name="output"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        internal static async Task <string> ToJsonAsync(this FndPLSQLSelectCommand command, OutputProperties output, CancellationToken cancellationToken)
        {
            var culture = string.IsNullOrWhiteSpace(output.CultureInfo) ? CultureInfo.InvariantCulture : new CultureInfo(output.CultureInfo);

            // utf-8 as default encoding
            Encoding encoding = string.IsNullOrWhiteSpace(output.OutputFile?.Encoding) ? Encoding.UTF8 : Encoding.GetEncoding(output.OutputFile.Encoding);

            // create json result
            using (var fileWriter = output.OutputToFile ? new StreamWriter(output.OutputFile.Path, false, encoding) : null)
                using (var writer = output.OutputToFile ? new JsonTextWriter(fileWriter) : new JTokenWriter() as JsonWriter)
                {
                    writer.Formatting = Formatting.Indented;
                    writer.Culture    = culture;

                    // start array
                    await writer.WriteStartArrayAsync(cancellationToken);

                    cancellationToken.ThrowIfCancellationRequested();
                    FndDataTable reader = command.ExecuteReader();
                    for (var j = 0; j < reader.Rows.Count; j++)
                    {
                        // start row object
                        await writer.WriteStartObjectAsync(cancellationToken);

                        foreach (FndDataColumn a in reader.Columns)
                        {
                            var resultValue = Convert.ToString(reader.Rows[j][a.Name]);

                            // add row element name
                            await writer.WritePropertyNameAsync(a.Name, cancellationToken);

                            // add row element value
                            await writer.WriteValueAsync(resultValue, cancellationToken);

                            cancellationToken.ThrowIfCancellationRequested();
                        }

                        cancellationToken.ThrowIfCancellationRequested();

                        // end row object
                        await writer.WriteEndObjectAsync(cancellationToken);
                    }

                    // end array
                    await writer.WriteEndArrayAsync(cancellationToken);

                    if (output.OutputToFile && output.OutputFile != null)
                    {
                        return(output.OutputFile.Path);
                    }

                    return(((JTokenWriter)writer).Token.ToString());
                }
        }
        /// <summary>
        /// Task for performing queries IFS Access Provider: http://ifsscan-odemo-2.cloudapp.net/ifsdoc/f1doc/foundation1/050_development/default.htm
        /// See documentation at https://github.com/CommunityHiQ/Frends.Community.IFSAccessProvider
        /// </summary>
        /// <param name="queryInput"></param>
        /// <param name="output"></param>
        /// <param name="connection"></param>
        /// <param name="cancellationToken"></param>
        /// <returns>Object { bool Success, string Result, string Message }</returns>
        public static async Task <Output> Query([PropertyTab] QueryProperties queryInput, [PropertyTab] OutputProperties output, [PropertyTab] ConnectionProperties connection, CancellationToken cancellationToken)
        {
            var conn = new FndConnection(connection.Address, connection.Username, connection.Password)
            {
                AsynchronousMode  = connection.AsynchronousMode,
                ConnectionTimeout = connection.TimeoutSeconds,
                CatchExceptions   = false
            };

            var command = new FndPLSQLSelectCommand(conn, queryInput.Query);

            foreach (var param in queryInput.Parameters)
            {
                command.BindVariables.Add(Extensions.CreateFndParameter(param));
            }

            var queryResult = await command.ToJsonAsync(output, cancellationToken);

            return(new Output {
                Result = queryResult, Success = true, Message = null
            });
        }
Example #4
0
        public List<String> Execute(string commandParameter)
        {
            if (_connection == null)
                throw new ApplicationException("Error Getting Connection");

            FndPLSQLSelectCommand command = new FndPLSQLSelectCommand(_connection, _selectStatement);
            command.BindVariables.Add(
                new FndBindVariable(
                    FndBindVariableDirection.In,
                    "NAME",
                    new FndTextAttribute(string.Concat(commandParameter, "%")))
                    );

            FndDataTable returnTable = command.ExecuteReader("CUSTOMER_INFO");

            var returnNames = new List<String>();
            foreach(FndDataRow item in returnTable.Rows)
            {
                returnNames.Add(item["NAME"].ToString());
            }

               return returnNames;
        }