예제 #1
0
        public static bool SaveOnJSON(NpgsqlDataReader reader, string schema, string tableName, string path)
        {
            try {
                JObject        table   = new JObject();
                List <JObject> metrics = new List <JObject>();

                while (reader.Read())
                {
                    JObject metric = new JObject();
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        metric[$"{reader.GetName(i)}"] = reader[i].ToString();
                    }
                    metrics.Add(metric);
                }

                table[tableName] = new JArray()
                {
                    metrics
                };
                using (StreamWriter file = File.CreateText($"./metrics/{path}/{schema}_{tableName}.json")) {
                    using (JsonTextWriter writer = new JsonTextWriter(file)) {
                        table.WriteTo(writer);
                    }
                }

                Console.WriteLine($"Success to export {schema}.{tableName} to JSON");
                return(true);
            } catch (Exception) {
                Console.WriteLine($"**Failing** to export {schema}.{tableName} to JSON");
                return(false);
            }
        }
예제 #2
0
        private static List <TEntity> MapQueryToEntities(NpgsqlDataReader reader)
        {
            var result = new List <TEntity>();

            List <TableColumn> columns = MetadataResolver.TableColumns <TEntity>();
            Dictionary <string, TableColumn> columnMap = columns.ToDictionary(i => i.Name, i => i);

            while (reader.Read())
            {
                var entity = new TEntity();

                for (int i = 0; i < reader.FieldCount; i++)
                {
                    string columnName = reader.GetName(i);

                    if (columnMap.TryGetValue(columnName, out TableColumn column))
                    {
                        object columnValue = reader.GetValue(i);
                        column.SetValue(entity, columnValue);
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine($"Warning: Failed to map db column '{columnName}' a TableColumn on entity '{typeof(TEntity)}' (did the schema change recently? is a db upgrade required?)");
                        Console.ResetColor();
                    }
                }

                result.Add(entity);
            }

            return(result);
        }
예제 #3
0
        public static List <NameValueCollection> ExecuteSQL(string sql)
        {
            NpgsqlConnection           npgsqlConnection = GetNpgSqlConnection();
            List <NameValueCollection> result           = new List <NameValueCollection>();

            lock (npgsqlConnection) {
                Console.WriteLine($"{DateTime.Now} : {sql}");

                //base.ExecuteQuery(sql);
                try {
                    // Execute a query
                    NpgsqlCommand    command   = new NpgsqlCommand(sql, npgsqlConnection);
                    NpgsqlDataReader sqlResult = command.ExecuteReader();

                    while (sqlResult.Read())
                    {
                        NameValueCollection c_result = new NameValueCollection();
                        for (int i = 0; i < sqlResult.FieldCount; i++)
                        {
                            c_result[sqlResult.GetName(i)] = sqlResult[i].ToString();
                        }
                        result.Add(c_result);
                    }

                    sqlResult.Close();
                } catch (Exception e) {
                    Console.WriteLine(e.Message);
                }
            }
            return(result);
        }
예제 #4
0
        public static DataColumn[] GetColumns(NpgsqlDataReader reader)
        {
            //reader.GetColumnSchema() на алиасы колонок в запросе забивает почему-то
            //reader.GetSchemaTable() какую-то хрень в ColumnSize возвращает

            var npgsqlColumns = reader.GetColumnSchema();
            var result        = new DataColumn[npgsqlColumns.Count];

            for (var i = 0; i < result.Length; i++)
            {
                var c          = npgsqlColumns[i];
                var columnName = reader.GetName(i);
                if (string.IsNullOrEmpty(columnName) || columnName == "?column?")
                {
                    columnName = "col_" + i;
                }
                result[i] = new DataColumn
                {
                    ColumnName  = columnName,
                    AllowDBNull = true,
                    DataType    = c.DataType,
                    MaxLength   = c.ColumnSize.GetValueOrDefault(-1)
                };
            }
            return(result);
        }
    private static Result OnQuery()
    {
        var columns = new List <string>();
        var rows    = new List <string[]>();

        for (var index = 0; index < reader.FieldCount; index++)
        {
            columns.Add(reader.GetName(index));
        }

        while (reader.Read())
        {
            var row = new string[reader.FieldCount];
            for (var index = 0; index < reader.FieldCount; index++)
            {
                object value = null;
                if (!reader.IsDBNull(index))
                {
                    value = reader.GetValue(index);
                }
                if (value == null)
                {
                    value = "";
                }
                row[index] = value.ToString();
            }
            rows.Add(row);
        }

        return(End(new Result {
            Success = true, Columns = columns.ToArray(), Rows = rows.ToArray()
        }));
    }
예제 #6
0
        /// <summary>
        /// Fill
        /// </summary>
        /// <param name="ds"></param>
        public void Fill(DataSet ds)
        {
            if (ds == null)
            {
                ds = new DataSet();
            }
            using (NpgsqlDataReader dr = command.ExecuteReader())
            {
                do
                {
                    var dt      = new DataTable();
                    var columns = dt.Columns;
                    var rows    = dt.Rows;
                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        string name = dr.GetName(i).Trim();
                        if (!columns.Contains(name))
                        {
                            columns.Add(new DataColumn(name, dr.GetFieldType(i)));
                        }
                    }

                    while (dr.Read())
                    {
                        DataRow daRow = dt.NewRow();
                        for (int i = 0; i < columns.Count; i++)
                        {
                            daRow[columns[i].ColumnName] = dr.GetValue(i);
                        }
                        dt.Rows.Add(daRow);
                    }
                    ds.Tables.Add(dt);
                } while (dr.NextResult());
            }
        }
예제 #7
0
 private void Search()
 {
     try
     {
         NpgsqlDataReader dataReader = PgSql.GetContactReport();
         dataGridView.RowCount    = 0;
         dataGridView.ColumnCount = dataReader.FieldCount;
         int row = 0;
         while (dataReader.Read())
         {
             int cell = 0;
             dataGridView.RowCount++;
             for (int i = 0; i < dataReader.FieldCount; i++)
             {
                 dataGridView.Columns[i].HeaderText       = dataReader.GetName(i);
                 dataGridView.Rows[row].Cells[cell].Value = dataReader[i].ToString();
                 cell++;
             }
             dataGridView.Rows[row].HeaderCell.Value = (row + 1).ToString();
             row++;
         }
         dataReader.Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
        public Dictionary <string, string> ExecuteQueryGetSingleRow(string commandText,
                                                                    Dictionary <string, object> parameters)
        {
            Dictionary <string, string> row = null;

            if (string.IsNullOrEmpty(commandText))
            {
                throw new ArgumentException("Command text cannot be null or empty.");
            }


            using (var conn = CreateConnection())
            {
                using (var command = CreateCommand(conn, commandText, parameters))
                {
                    using (NpgsqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            row = new Dictionary <string, string>();
                            for (var i = 0; i < reader.FieldCount; i++)
                            {
                                var columnName  = reader.GetName(i);
                                var columnValue = reader.IsDBNull(i) ? null : reader.GetValue(i).ToString();
                                row.Add(columnName, columnValue);
                            }
                            break;
                        }
                    }
                }
            }


            return(row);
        }
예제 #9
0
        static public void ReaderSeatRow(NpgsqlConnection con)
        {
            Console.WriteLine("\n");
            Console.WriteLine("Seat/Row");
            Console.WriteLine("--------------------------------------");
            var sql = $"select * from \"Seat/Row\"";
            var cmd = new NpgsqlCommand(sql, con);
            NpgsqlDataReader rdr = cmd.ExecuteReader();

            Console.WriteLine($"{rdr.GetName(0),-4}\t {rdr.GetName(1),-7} \t {rdr.GetName(2),-15}");
            while (rdr.Read())
            {
                Console.WriteLine($"{rdr.GetInt32(0),-4} \t {rdr.GetInt32(1),-7} \t{rdr.GetInt32(2),-15} ");
            }
            rdr.Close();
        }
예제 #10
0
파일: DbContext.cs 프로젝트: geffzhang/core
        public void Write <R>(IDataOutput <R> o) where R : IDataOutput <R>
        {
            int count = reader.FieldCount;

            for (int i = 0; i < count; i++)
            {
                string name = reader.GetName(i);
                uint   oid  = reader.GetDataTypeOID(i);

                if (reader.IsDBNull(i))
                {
                    o.PutNull(name);
                    continue;
                }

                if (oid == 1043 || oid == 1042)
                {
                    o.Put(name, reader.GetString(i));
                }
                else if (oid == 790) // money
                {
                    o.Put(name, reader.GetDecimal(i));
                }
            }
        }
예제 #11
0
        /// <summary>
        /// Executa Npgsql query retornando lista de linhas.
        /// </summary>
        /// <param name="strComando">Npgsql query a ser executada.</param>
        /// <param name="dicParametros">Parametros opcionais da query.</param>
        /// <returns>Lista tipo Dictionary of Key, par de valores representando
        /// nome da coluna e o valor correspondente.</returns>
        public List <Dictionary <string, string> > Query(string strComando, Dictionary <string, object> dicParametros)
        {
            List <Dictionary <string, string> > ldicLinhas = null;

            if (string.IsNullOrEmpty(strComando))
            {
                throw new ArgumentException("Comando não pode ser Null ou Branco.");
            }

            try
            {
                AbrirConexao();
                var vComando = CreateCommand(strComando, dicParametros);
                using (NpgsqlDataReader npgsqlReader = vComando.ExecuteReader())
                {
                    ldicLinhas = new List <Dictionary <string, string> >();
                    while (npgsqlReader.Read())
                    {
                        var vLinha = new Dictionary <string, string>();
                        for (var i = 0; i < npgsqlReader.FieldCount; i++)
                        {
                            var columnName  = npgsqlReader.GetName(i);
                            var columnValue = npgsqlReader.IsDBNull(i) ? null : npgsqlReader.GetString(i);
                            vLinha.Add(columnName, columnValue);
                        }
                        ldicLinhas.Add(vLinha);
                    }
                }
            }
            finally
            {
                FecharConexao();
            }
            return(ldicLinhas);
        }
예제 #12
0
        public List <Dictionary <string, object> > Select(string command_text)
        {
            List <Dictionary <string, object> > result = new List <Dictionary <string, object> >();

            try
            {
                NpgsqlCommand    command = new NpgsqlCommand(command_text, connection);
                NpgsqlDataReader reader  = command.ExecuteReader();

                while (reader.Read())
                {
                    Dictionary <string, object> row = new Dictionary <string, object>();
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        row.Add(reader.GetName(i), reader[i]);
                    }
                    result.Add(row);
                }
            }
            finally
            {
                connection.Close();
            }
            return(result);
        }
        private async Task IterateReader(NpgsqlDataReader reader, string schema, string tableName, CancellationToken cancellationToken = default(CancellationToken))
        {
            var selector = new List <string>();
            var sb       = new StringBuilder();

            while (await reader.ReadAsync(cancellationToken).ConfigureAwait(false))
            {
                sb.Append("(");
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    var val = FormatValueFromDataType(reader.GetFieldType(i), reader[i]);
                    sb.Append($"{val},");
                    if (!selector.Count().Equals(reader.FieldCount))
                    {
                        selector.Add(reader.GetName(i));
                    }
                }
                sb.Length--;
                sb.Append("),");
            }

            sb.Length--;
            var str = $"INSERT INTO {schema}.{tableName} ({string.Join(",", selector)}) VALUES";

            File.WriteAllText($"{FileDirectory}{schema}-{tableName}.sql", $"{str} {sb.ToString()};");
        }
예제 #14
0
        static public void ShowRead(NpgsqlDataReader reader)
        {
            if (reader.HasRows)
            {
                const int part_size  = 15;
                string    title_part = "+" + new string('-', part_size);
                string    title      = "";
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    title += title_part;
                }
                title += "+";
                Console.WriteLine(title);
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    Console.Write($"|{reader.GetName(i),-part_size}");
                }
                Console.WriteLine("|");
                Console.WriteLine(title);

                while (reader.Read())
                {
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        Console.Write($"|{reader[i],-part_size}");
                    }
                    Console.WriteLine("|");
                    Console.WriteLine(title);
                }
            }
            reader.Close();
        }
예제 #15
0
        private static void MapObject <T>(this NpgsqlDataReader reader, T obj)
            where T : class, new()
        {
            var mapInfo = GetMapInfo <T>();

            for (var i = 0; i < reader.FieldCount; i++)
            {
                if (reader.GetName(i) == "fieldsgroup")
                {
                }
                if (reader[i] != DBNull.Value && mapInfo.ContainsKey(reader.GetName(i).ToUpper()))
                {
                    var prop = mapInfo[reader.GetName(i).ToUpper()];
                    prop.SetValue(obj, Convert.ChangeType(reader[i], prop.PropertyType), null);
                }
            }
        }
예제 #16
0
        /// <summary>
        /// Get datasets from POSTEGRES - use this override when columns in query and in class T is diferent
        /// </summary>
        /// <param name="Sql_ora"></param>
        /// <param name="Task_name"></param>
        /// <param name="D_columns"></param>
        /// <param name="P_columns"></param>
        /// <returns></returns>
        public async Task <List <T> > Get_PSTGR(string Sql_ora, string Task_name, Dictionary <string, int> D_columns, Dictionary <int, string> P_columns, Dictionary <int, Type> P_types)
        {
            List <T> Rows = new List <T>();

            try
            {
                using (NpgsqlConnection conO = new NpgsqlConnection(npC))
                {
                    await conO.OpenAsync();

                    bool list_columns             = false;
                    T    Row                      = new T();
                    IPropertyAccessor[] Accessors = Row.GetType().GetProperties()
                                                    .Select(pi => PropertyInfoHelper.CreateAccessor(pi)).ToArray();
                    using NpgsqlCommand cust      = new NpgsqlCommand(Sql_ora, conO);
                    using NpgsqlDataReader reader = cust.ExecuteReader();
                    while (await reader.ReadAsync())
                    {
                        if (!list_columns)
                        {
                            if (D_columns.Count == 0)
                            {
                                for (int col = 0; col < reader.FieldCount; col++)
                                {
                                    D_columns.Add(reader.GetName(col).ToLower(), col);
                                }
                            }
                            list_columns = true;
                        }
                        Row = new T();
                        int counter = 0;
                        foreach (var Accessor in Accessors)
                        {
                            string metod = P_columns[counter];
                            if (D_columns.ContainsKey(metod))
                            {
                                int    col      = D_columns[metod];
                                object readData = reader.GetValue(D_columns[metod]);
                                if (readData != System.DBNull.Value)
                                {
                                    Type pt = P_types[counter];
                                    Accessor.SetValue(Row, Convert.ChangeType(readData, Nullable.GetUnderlyingType(pt) ?? pt, null));
                                }
                            }
                            counter++;
                        }
                        Rows.Add(Row);
                    }
                }
                Rows.Sort();
                return(Rows);
            }
            catch (Exception e)
            {
                Loger.Log("Błąd modyfikacji tabeli:" + Task_name + e);
                return(Rows);
            }
        }
예제 #17
0
        private static string GetTableHeaderCSV(NpgsqlDataReader reader)
        {
            string header = "";

            for (int i = 0; i < reader.FieldCount; i++)
            {
                header += reader.GetName(i) + ";";
            }
            return(header);
        }
예제 #18
0
        static void PrintBooks(NpgsqlConnection connection)
        {
            Console.WriteLine("\n\t\t\t\tBooks Table\n");
            connection.Open();
            var sqlb = "SELECT * FROM books";

            using var cmdb = new NpgsqlCommand(sqlb, connection);
            using NpgsqlDataReader rdrb = cmdb.ExecuteReader();

            Console.WriteLine("{0,-5}    |    {1,-18}    |    {2,-12}    |    {3,-10}\n", rdrb.GetName(0), rdrb.GetName(1),
                              rdrb.GetName(2), rdrb.GetName(3));

            while (rdrb.Read())
            {
                Console.WriteLine("{0,-5}    |    {1,-18}    |    {2,-12}    |    {3,-10}", rdrb.GetInt32(0), rdrb.GetString(1),
                                  rdrb.GetString(2), rdrb.GetInt32(3));
            }
            connection.Close();
        }
예제 #19
0
        static void PrintStatistic(NpgsqlConnection connection)
        {
            Console.WriteLine("\n\t\t\t\t\tStatistic Table\n");
            connection.Open();
            var sqls = "SELECT * FROM statistic";

            using var cmds = new NpgsqlCommand(sqls, connection);
            using NpgsqlDataReader rdrs = cmds.ExecuteReader();

            Console.WriteLine("{0,-8}    |    {1,-8}    |    {2,-8}    |    {3,-15}    |    {4,-6}\n", rdrs.GetName(0), rdrs.GetName(1),
                              rdrs.GetName(2), rdrs.GetName(3), rdrs.GetName(4));

            while (rdrs.Read())
            {
                Console.WriteLine("{0,-8}    |    {1,-8}    |    {2,-8}    |    {3,-15}    |    {4,-6}...", rdrs.GetInt32(0), rdrs.GetInt32(1),
                                  rdrs.GetInt32(2), rdrs.GetInt32(3), rdrs.GetString(4).Substring(0, rdrs.GetString(4).Length / 20));
            }
            connection.Close();
        }
예제 #20
0
        private static string[] GetColumnNames(NpgsqlDataReader reader)
        {
            var fieldCount = reader.FieldCount;
            var result     = new string[fieldCount];

            for (var i = 0; i < fieldCount; i++)
            {
                result[i] = reader.GetName(i);
            }
            return(result);
        }
예제 #21
0
        /// <summary>
        /// スキーマ取得
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        private DataTable GetShcema(NpgsqlDataReader reader)
        {
            var result = new DataTable();

            for (var i = 0; i < reader.FieldCount; i++)
            {
                result.Columns.Add(new DataColumn(reader.GetName(i)));
            }

            return(result);
        }
예제 #22
0
        public List <List <string> > QueryList(string sql)
        {
            List <List <string> > request_result = new List <List <string> >();
            // Making a request
            NpgsqlDataReader data_reader = default(NpgsqlDataReader);

            try
            {
                _connection.Open();

                data_reader = (new NpgsqlCommand(sql, _connection)).ExecuteReader();

                bool is_column_headers_added = false;
                while (data_reader.Read())
                {
                    if (!data_reader.HasRows)
                    {
                        continue;
                    }

                    // If there is something in answer.
                    List <string> cortege = new List <string>();
                    if (!is_column_headers_added)
                    {
                        for (int column_index = 0; column_index < data_reader.FieldCount; column_index++)
                        {
                            cortege.Add(data_reader.GetName(column_index));
                        }
                        request_result.Add(cortege);
                        cortege = new List <string>();
                        is_column_headers_added = true;
                    }

                    for (int field_index = 0; field_index < data_reader.FieldCount; field_index++)
                    {
                        cortege.Add(data_reader[field_index].ToString());
                    }

                    // Adding next cortege to list
                    request_result.Add(cortege);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                data_reader.Close();
                _connection.Close();
            }

            return(request_result);
        }
        private void GetDataFromSQLTable(NpgsqlConnection con)
        {
            var data = new List <KodName>();

            con.Open();

            NpgsqlCommand com = new NpgsqlCommand("select * from typebuilding order by kod", con);

            NpgsqlDataReader reader = com.ExecuteReader();

            DataTable Table = new DataTable();

            // Заполнение шапки таблицы
            Table.Columns.Add(reader.GetName(0));
            Table.Columns.Add(reader.GetName(1));


            while (reader.Read())
            {
                try
                {
                    Table.Rows.Add(new object[] { reader.GetValue(0), reader.GetValue(1) });
                }
                catch { }

                var mc = new KodName
                {
                    Kod  = reader[1].ToString().Trim(),
                    Name = reader[0].ToString().Trim()
                };
                data.Add(mc);
            }

            con.Close();

            dataGridView1.DataSource = Table;

            comboBox1.DataSource    = data;
            comboBox1.DisplayMember = "Name"; // То, что будет отображаться пользователю
            comboBox1.ValueMember   = "Kod";  // То, что будет в SelectedValue
        }
예제 #24
0
 private void FigureOutFunctionReturn(IEnumerable <Parameter> parameters, NpgsqlDataReader rdr, string actualName)
 {
     if (parameters.Where(param => param.Direction == ParameterDirection.InputOutput || param.Direction == ParameterDirection.Output).Count() == 0)
     {
         if (rdr.FieldCount == 1 && rdr.GetName(0) == actualName)
         {
             // Simple return
             rdr.Read();
             Console.WriteLine("Simple Return: {0}", rdr.GetValue(0));
         }
     }
 }
예제 #25
0
        static void PrintUsers(NpgsqlConnection connection)
        {
            Console.WriteLine("\n\t\t\tUsers Table\n");
            connection.Open();

            var sql = "SELECT * FROM users";

            using var cmd = new NpgsqlCommand(sql, connection);

            using NpgsqlDataReader rdr = cmd.ExecuteReader();

            Console.WriteLine("{0,-4}    |    {1,-25}    |    {2,-25}\n", rdr.GetName(0), rdr.GetName(1),
                              rdr.GetName(2));

            while (rdr.Read())
            {
                Console.WriteLine("{0,-4}    |    {1,-25}    |    {2,-25}", rdr.GetInt32(0), rdr.GetString(1),
                                  rdr.GetString(2));
            }
            connection.Close();
        }
예제 #26
0
        static public void Dynamic_Search1(NpgsqlConnection con)
        {
            DateTime date;

            Console.WriteLine("Input date");
            date = Convert.ToDateTime(Console.ReadLine());
            var sql = $"select team.id, team.name, game_date.date_id, schedule.date  from team inner join game on team.id = game.team1_id " +
                      $"inner join game_date on game.id = game_date.game_id  inner join schedule on game_date.game_id = schedule.id where schedule.date = '{date}'";
            var cmd = new NpgsqlCommand(sql, con);

            Execute(cmd);

            NpgsqlDataReader rdr = cmd.ExecuteReader();

            Console.WriteLine($"{rdr.GetName(0),-4}\t {rdr.GetName(1),-4}\t \t{rdr.GetName(2),10}\t {rdr.GetName(3),10}");
            while (rdr.Read())
            {
                Console.WriteLine($"{rdr.GetInt32(0),-4} \t {rdr.GetString(1),-3}\t\t {rdr.GetInt32(2),10} \t\t{rdr.GetDate(3),10} \t\t ");
            }
            rdr.Close();
        }
예제 #27
0
        /// <summary>
        /// スキーマ取得
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        private DataTable GetShcema(NpgsqlDataReader reader)
        {
            var result = new DataTable();

            for (var i = 0; i < reader.FieldCount; i++)
            {
                var dataType = reader.GetFieldType(i);
                result.Columns.Add(new DataColumn(reader.GetName(i).ToUpper(), dataType));
            }

            return(result);
        }
예제 #28
0
        private void Init(NpgsqlDataReader _reader)
        {
            if (_reader == null)
            {
                return;
            }

            __rows = new List <DBRow>();

            DBRow _row = null;

            using (_reader)
            {
                while (_reader.HasRows)
                {
                    while (_reader.Read())
                    {
                        if (_reader.FieldCount > 0)
                        {
                            string _firstColumn = _reader.GetName(0);

                            for (int _i = 0; _i < _reader.FieldCount; _i++)
                            {
                                DBField _field = new DBField();
                                _field.Name  = _reader.GetName(_i);
                                _field.Value = _reader.GetValue(_i);

                                if (_field.Name == _firstColumn)
                                {
                                    _row = new DBRow();
                                    __rows.Add(_row);
                                }
                                _row.Add(_field);
                            }
                        }
                    }
                    _reader.NextResult();
                }
            }
        }
예제 #29
0
 public Task <PGDatabaseResult> ExecuteReaderAsyncIns(string sConnectionString, string sSQL, params NpgsqlParameter[] parameters)
 {
     return(Task.Run(() =>
     {
         try
         {
             List <object> sData = new List <object>();
             using (var newConnection = new NpgsqlConnection(sConnectionString))
                 using (var newCommand = new NpgsqlCommand(sSQL, newConnection))
                 {
                     newCommand.CommandType = CommandType.Text;
                     if (parameters != null)
                     {
                         newCommand.Parameters.AddRange(parameters);
                     }
                     newConnection.Open();
                     NpgsqlDataReader reader = newCommand.ExecuteReader();
                     while (reader.Read())
                     {
                         procinsplink oData = new procinsplink();
                         foreach (var pro in oData.GetType().GetProperties())
                         {
                             for (int i = 0; i < reader.FieldCount; i++)
                             {
                                 if (pro.Name == reader.GetName(i))
                                 {
                                     pro.SetValue(oData, reader[i]);
                                 }
                             }
                         }
                         sData.Add(oData);
                     }
                     newConnection.Close();
                 }
             PGDatabaseResult result = new PGDatabaseResult()
             {
                 Data = sData,
                 Success = true
             };
             return result;
         }
         catch (Exception ex)
         {
             PGDatabaseResult result = new PGDatabaseResult()
             {
                 Result = "Error: " + ex.Message,
                 Success = false
             };
             return result;
         }
     }));
 }
예제 #30
0
        private (string[] columns, string formatting) GetColumnNames(NpgsqlDataReader reader)
        {
            string[] columns    = new string[reader.VisibleFieldCount];
            string   formatting = "";

            for (int i = 0; i < reader.VisibleFieldCount; i++)
            {
                columns[i]  = reader.GetName(i);
                formatting += "{" + i + ", -15}";
            }

            return(columns, formatting);
        }