public User ReadPlayer(string username) { try { using NpgsqlConnection conn = OpenConnection(); using var cmd = new NpgsqlCommand("select \"Id\", \"Password\", \"Coins\", \"Elo\", \"WonGames\", \"Image\", \"Bio\" from \"user\" where \"Name\"=@username", conn); cmd.Parameters.AddWithValue("@username", username); cmd.Prepare(); NpgsqlDataReader reader = cmd.ExecuteReader(); if (!reader.Read()) { return(null); } Guid guid = reader.GetFieldValue <Guid>(0); byte[] pw = reader.GetFieldValue <byte[]>(1); int coins = reader.GetInt32(2); int elo = reader.GetInt32(3); int won = reader.GetInt32(4); string image = reader.GetString(5); string bio = reader.GetString(6); List <Card> deck, stack; deck = ReadDeck(guid); stack = ReadStack(guid); return(new User(guid, username, pw, coins, elo, won, image, bio, deck, stack)); } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
public async Task <List <Player> > GetPlayers(string gameName) { var players = new List <Player>(); using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT player_name, avatar, correct_answers, wrong_answers, is_ready FROM games g JOIN players p ON p.game_id = g.id WHERE game_name = @gameName;", connection)) { cmd.Parameters.AddWithValue("gameName", gameName); using (NpgsqlDataReader dr = await cmd.ExecuteReaderAsync()) { while (dr.Read()) { var player = new Player(); player.Username = dr.GetFieldValue <string>("player_name"); player.Avatar = dr.GetFieldValue <string>("avatar"); player.CorrectAnswers = dr.GetFieldValue <int>("correct_answers"); player.WrongAnswers = dr.GetFieldValue <int>("wrong_answers"); player.IsReady = dr.GetFieldValue <bool>("is_ready"); players.Add(player); } } } return(players); }
public Card ReadCard(Guid id) { try { using NpgsqlConnection conn = OpenConnection(); using var cmd = new NpgsqlCommand("select \"Name\", \"Damage\", \"isLocked\", \"Element\", \"Cardtype\" from \"Card\" where \"id\"=@id", conn); cmd.Parameters.AddWithValue("@id", id); cmd.Prepare(); NpgsqlDataReader reader = cmd.ExecuteReader(); if (!reader.Read()) { return(null); } string name = reader.GetString(0); int damage = reader.GetInt32(1); bool isLocked = reader.GetBoolean(2); Element element = reader.GetFieldValue <Element>(3); Cardtype type = reader.GetFieldValue <Cardtype>(4); return(new Card(id, element, name, damage, isLocked)); } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
public async Task <bool> GameEnded(string gameName) { bool isEnded = false; using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT g.question_id, s.number_of_questions FROM games AS g JOIN settings AS s ON s.game_id = g.id WHERE game_name = @gameName;", connection)) { cmd.Parameters.AddWithValue("gameName", gameName); await cmd.ExecuteNonQueryAsync(); using (NpgsqlDataReader dr = await cmd.ExecuteReaderAsync()) { while (dr.Read()) { var questionNumber = dr.GetFieldValue <int>("question_id"); var totalNumberOfQuestions = dr.GetFieldValue <int>("number_of_questions"); isEnded = questionNumber > totalNumberOfQuestions; } } } return(isEnded); }
public async Task <List <Answer> > GetAllAnswers(string gameName, int questionId) { var answers = new List <Answer>(); try { using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT answers.body, answers.is_correct FROM answers JOIN questions AS q ON q.id = answers.question_id JOIN games AS g ON g.id = q.game_id WHERE game_name = @gameName AND answers.question_id = @questionId;", connection)) { cmd.Parameters.AddWithValue("gameName", gameName); cmd.Parameters.AddWithValue("questionId", questionId); using (NpgsqlDataReader dr = await cmd.ExecuteReaderAsync()) { while (dr.Read()) { var answer = new Answer(); answer.Body = dr.GetFieldValue <string>("body"); answer.isCorrect = dr.GetFieldValue <bool>("is_correct"); answers.Add(answer); } } } } catch (Exception ex) { Console.WriteLine(ex); } return(answers); }
public override ActivePlayer ExtractEntity(NpgsqlDataReader reader) { long id_player = reader.GetFieldValue <long>(0); long id_match = reader.GetFieldValue <long>(1); long points = reader.GetFieldValue <long>(2); string type = reader.GetFieldValue <string>(3); model.Type typePlayer; if (type.Equals("Reserve")) { typePlayer = model.Type.Reserve; } else { typePlayer = model.Type.Participant; } ActivePlayer activePlayer = new ActivePlayer() { ID = new Tuple <long, long>(id_player, id_match), Points = points, TypePlayer = typePlayer }; return(activePlayer); }
NpgsqlDbColumn LoadColumnDefinition(NpgsqlDataReader reader, TypeHandlerRegistry registry) { var columnName = reader.GetString(reader.GetOrdinal("attname")); var column = new NpgsqlDbColumn { AllowDBNull = !reader.GetBoolean(reader.GetOrdinal("attnotnull")), BaseCatalogName = _connection.Database, BaseColumnName = columnName, BaseSchemaName = reader.GetString(reader.GetOrdinal("nspname")), BaseServerName = _connection.Host, BaseTableName = reader.GetString(reader.GetOrdinal("relname")), ColumnName = columnName, ColumnOrdinal = reader.GetInt32(reader.GetOrdinal("attnum")) - 1, ColumnAttributeNumber = (short)(reader.GetInt16(reader.GetOrdinal("attnum")) - 1), IsKey = reader.GetBoolean(reader.GetOrdinal("isprimarykey")), IsReadOnly = !reader.GetBoolean(reader.GetOrdinal("is_updatable")), IsUnique = reader.GetBoolean(reader.GetOrdinal("isunique")), DataTypeName = reader.GetString(reader.GetOrdinal("typname")), TableOID = reader.GetFieldValue <uint>(reader.GetOrdinal("attrelid")), TypeOID = reader.GetFieldValue <uint>(reader.GetOrdinal("typoid")) }; column.PostgresType = registry.PostgresTypes.ByOID[column.TypeOID]; var defaultValueOrdinal = reader.GetOrdinal("default"); column.DefaultValue = reader.IsDBNull(defaultValueOrdinal) ? null : reader.GetString(defaultValueOrdinal); column.IsAutoIncrement = column.DefaultValue != null && column.DefaultValue.StartsWith("nextval("); ColumnPostConfig(column, reader.GetInt32(reader.GetOrdinal("typmod"))); return(column); }
public List <User> ReadScoreboard() { try { using NpgsqlConnection conn = OpenConnection(); using var cmd = new NpgsqlCommand("select \"Id\", \"Password\", \"Coins\", \"Elo\", \"WonGames\", \"Image\", \"Bio\", \"Name\" from \"user\" order by \"Elo\", \"WonGames\"", conn); cmd.Prepare(); NpgsqlDataReader reader = cmd.ExecuteReader(); if (!reader.Read()) { return(null); } List <User> sortedList = new List <User>(); do { Guid guid = reader.GetFieldValue <Guid>(0); byte[] pw = reader.GetFieldValue <byte[]>(1); int coins = reader.GetInt32(2); int elo = reader.GetInt32(3); int won = reader.GetInt32(4); string image = reader.GetString(5); string bio = reader.GetString(6); string username = reader.GetString(7); sortedList.Add(new User(guid, username, pw, coins, elo, won, image, bio, null, null)); } while (reader.Read()); return(sortedList); } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
NpgsqlDbColumn LoadColumnDefinition(NpgsqlDataReader reader, DatabaseInfo databaseInfo) { // Note: we don't set ColumnName and BaseColumnName. These should always contain the // column alias rather than the table column name (i.e. in case of "SELECT foo AS foo_alias"). // It will be set later. var column = new NpgsqlDbColumn { AllowDBNull = !reader.GetBoolean(reader.GetOrdinal("attnotnull")), BaseCatalogName = _connection.Database, BaseSchemaName = reader.GetString(reader.GetOrdinal("nspname")), BaseServerName = _connection.Host, BaseTableName = reader.GetString(reader.GetOrdinal("relname")), ColumnOrdinal = reader.GetInt32(reader.GetOrdinal("attnum")) - 1, ColumnAttributeNumber = (short)(reader.GetInt16(reader.GetOrdinal("attnum")) - 1), IsKey = reader.GetBoolean(reader.GetOrdinal("isprimarykey")), IsReadOnly = !reader.GetBoolean(reader.GetOrdinal("is_updatable")), IsUnique = reader.GetBoolean(reader.GetOrdinal("isunique")), DataTypeName = reader.GetString(reader.GetOrdinal("typname")), TableOID = reader.GetFieldValue<uint>(reader.GetOrdinal("attrelid")), TypeOID = reader.GetFieldValue<uint>(reader.GetOrdinal("typoid")) }; column.PostgresType = databaseInfo.ByOID[column.TypeOID]; var defaultValueOrdinal = reader.GetOrdinal("default"); column.DefaultValue = reader.IsDBNull(defaultValueOrdinal) ? null : reader.GetString(defaultValueOrdinal); column.IsAutoIncrement = column.DefaultValue != null && column.DefaultValue.StartsWith("nextval("); ColumnPostConfig(column, reader.GetInt32(reader.GetOrdinal("typmod"))); return column; }
public IActionResult GetBik() { List <Krava> krave = new List <Krava>(); broker.OtvoriKonekciju(); // for composite type and enum type broker.connection.TypeMapper.MapEnum <Pol>("POL"); broker.connection.TypeMapper.MapComposite <Rasa>("RASA"); var command = new NpgsqlCommand(@"SELECT * FROM ""krava_m"";", broker.connection); NpgsqlDataReader reader = command.ExecuteReader(); Krava k = new Krava(); while (reader.Read()) { k = new Krava(); k.IdZivotinje = reader[0].ToString(); k.Ime = reader[1].ToString(); k.DatumRodjenja = Convert.ToDateTime(reader[2].ToString()); k.IdZivotinjeMajke = reader[3].ToString(); k.Pol = reader.GetFieldValue <Pol>(4); k.Rasa = reader.GetFieldValue <Rasa>(5); if (reader[6] != DBNull.Value) { k.TrenutnaKolicinaMleka = Convert.ToInt32(reader[6]); } krave.Add(k); } broker.ZatvoriKonekciju(); return(Ok(krave)); }
public Session GetBySessionId(string sessionGUID) { var session = new Session(); try { using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT * FROM sessions WHERE session_guid = @sessionGUID", connection)) { cmd.Parameters.AddWithValue("sessionGUID", sessionGUID); using (NpgsqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { session.SessionId = dr.GetFieldValue <int>("id"); session.SessionGUID = dr.GetFieldValue <string>("session_guid"); session.SessionTimeout = dr.GetFieldValue <int>("session_timeout"); session.ExpirationDate = dr.GetFieldValue <DateTime>("expirate_date"); } } } return(session); } catch (Exception ex) { throw; //log exception } }
private Krava vratiKravu(int id) { broker.OtvoriKonekciju(); broker.connection.TypeMapper.MapEnum <Pol>("POL"); broker.connection.TypeMapper.MapComposite <Rasa>("RASA"); var command = new NpgsqlCommand(@"SELECT * FROM ""Krava"" WHERE ""idZivotinje"" = '" + id + "';", broker.connection); NpgsqlDataReader reader = command.ExecuteReader(); Krava krava = new Krava(); while (reader.Read()) { krava.IdZivotinje = reader[0].ToString(); krava.Ime = reader[1].ToString(); krava.DatumRodjenja = Convert.ToDateTime(reader[2].ToString()); krava.IdZivotinjeMajke = reader[3].ToString(); krava.Pol = reader.GetFieldValue <Pol>(4); krava.Rasa = reader.GetFieldValue <Rasa>(5); if (reader[6] != DBNull.Value) { krava.TrenutnaKolicinaMleka = Convert.ToInt32(reader[6]); } } broker.ZatvoriKonekciju(); return(krava); }
public async Task <Game> GetGame(string gameName) { var game = new Game(); game.GameSettings = new Settings(); game.GameName = gameName; using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT category, number_of_questions, time_per_question FROM games g JOIN settings s ON s.game_id = g.id WHERE game_name = @gameName;", connection)) { cmd.Parameters.AddWithValue("gameName", gameName); using (NpgsqlDataReader dr = await cmd.ExecuteReaderAsync()) { while (dr.Read()) { game.GameCategory = dr.GetFieldValue <string>("category"); game.GameSettings.TotalNumberOfQuestions = dr.GetFieldValue <int>("number_of_questions"); game.GameSettings.TimePerQuestion = dr.GetFieldValue <int>("time_per_question"); } } } return(game); }
public IEnumerable <Session> GetAll() { var sessions = new List <Session>(); try { using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT * FROM sessions", connection)) { using (NpgsqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { var session = new Session(); session.SessionId = dr.GetFieldValue <int>("id"); session.SessionGUID = dr.GetFieldValue <string>("session_guid"); session.SessionTimeout = dr.GetFieldValue <int>("session_timeout"); session.ExpirationDate = dr.GetFieldValue <DateTime>("expirate_date"); sessions.Add(session); } } } return(sessions); } catch (Exception ex) { throw; //log exception } }
public static List <TravellerObject> SelectTravellers(int limit, int offset) { List <TravellerObject> returnObj = new List <TravellerObject>(); NpgsqlConnection conn = null; NpgsqlDataReader dr = null; try { conn = OpenConnectionAndGetReader("SELECT * from traveller order by lower(email) limit :p0 offset :p1;", out dr, limit, offset); while (dr.Read()) { string email = dr.GetFieldValue <string>(dr.GetOrdinal("email")); string hashedPassword = dr.GetFieldValue <string>(dr.GetOrdinal("password")); string name = dr.GetFieldValue <string>(dr.GetOrdinal("name")); string address = dr.GetFieldValue <string>(dr.GetOrdinal("address")); string phone = dr.GetFieldValue <string>(dr.GetOrdinal("phone")); returnObj.Add(new TravellerObject(email, hashedPassword, name, address, phone)); } } finally { conn.Close(); } return(returnObj); }
public static List <StationObject> SelectStations(int limit, int offset) { List <StationObject> returnObj = new List <StationObject>(); NpgsqlConnection conn = null; NpgsqlDataReader dr = null; try { conn = OpenConnectionAndGetReader("SELECT * from station order by lower(street_address), lower(city), lower(country) limit :p0 offset :p1;", out dr, limit, offset); while (dr.Read()) { string street_address = dr.GetFieldValue <string>(dr.GetOrdinal("street_address")); string city = dr.GetFieldValue <string>(dr.GetOrdinal("city")); string country = dr.GetFieldValue <string>(dr.GetOrdinal("country")); returnObj.Add(new StationObject(street_address, city, country)); } } finally { conn.Close(); } return(returnObj); }
public static List <BookingObject> SelectBookings(int limit, int offset) { List <BookingObject> returnObj = new List <BookingObject>(); NpgsqlConnection conn = null; NpgsqlDataReader dr = null; try { conn = OpenConnectionAndGetReader("SELECT * from booking order by busride_id, lower(traveller) limit :p0 offset :p1;", out dr, limit, offset); while (dr.Read()) { int busride_id = dr.GetFieldValue <int>(dr.GetOrdinal("busride_id")); string traveller = dr.GetFieldValue <string>(dr.GetOrdinal("traveller")); int seats = dr.GetFieldValue <int>(dr.GetOrdinal("seats")); returnObj.Add(new BookingObject(busride_id, traveller, seats)); } } finally { conn.Close(); } return(returnObj); }
public static TravellerObject VerifyTraveller(string username, string hashedPassword) { ErrorMessage = "Wrong username or password."; TravellerObject returnObj = null; NpgsqlConnection conn = null; NpgsqlDataReader dr = null; try { conn = OpenConnectionAndGetReader("SELECT * from traveller WHERE email = :p0 AND password = :p1;", out dr, username, hashedPassword); if (dr.Read()) { string email = dr.GetFieldValue <string>(dr.GetOrdinal("email")); string _hashedPassword = dr.GetFieldValue <string>(dr.GetOrdinal("password")); string name = dr.GetFieldValue <string>(dr.GetOrdinal("name")); string address = dr.GetFieldValue <string>(dr.GetOrdinal("address")); string phone = dr.GetFieldValue <string>(dr.GetOrdinal("phone")); returnObj = new TravellerObject(email, _hashedPassword, name, address, phone); ErrorMessage = ""; } } finally { conn.Close(); } return(returnObj); }
public override Team ExtractEntity(NpgsqlDataReader reader) { long ID = reader.GetFieldValue <long>(0); string name = reader.GetFieldValue <string>(1); Team team = new Team(); team.ID = ID; team.Name = name; return(team); }
private static Place MapCurrentRowToPlace(NpgsqlDataReader reader) { var result = new Place { Id = reader.GetFieldValue <Guid>(reader.GetOrdinal("id")), Names = reader.GetFieldValue <List <PlaceName> >(reader.GetOrdinal("names")), TelCode = reader.GetFieldValue <string>(reader.GetOrdinal("tel_code")) }; return(result); }
public override Player ExtractEntity(NpgsqlDataReader reader) { long id = reader.GetFieldValue <long>(0); string name = reader.GetFieldValue <string>(1); string school = reader.GetFieldValue <string>(2); long id_team = reader.GetFieldValue <long>(3); Player player = new Player(name, school, id_team) { ID = id, }; return(player); }
public bool Get(string name, ref short[] v) { try { int ord = reader.GetOrdinal(name); if (!reader.IsDBNull(ord)) { v = reader.GetFieldValue <short[]>(ord); return(true); } } catch { } return(false); }
public Habit GetHabitById(Guid user_id, Guid habit_id) { Habit habit; string query = "select id, name, days_off, current_streak, longest_streak, user_id, created_at from \"Habit\" where id = @id and user_id = @user_id"; using (var cmd = new NpgsqlCommand(query, _connection, _transaction)) { cmd.Parameters.AddWithValue("id", habit_id); cmd.Parameters.AddWithValue("user_id", user_id); NpgsqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { Guid id = reader.GetGuid(0); string name = reader.GetString(1); string[] days = reader.GetFieldValue <string[]>(2); int current_streak = reader.GetInt32(3); int longest_streak = reader.GetInt32(4); List <DateTime> logs = GetLog(habit_id); int log_count = GetLogCount(habit_id); Guid userid = reader.GetGuid(5); DateTime created_at = reader.GetDateTime(6); habit = (new Habit(id, name, new DaysOff(days), new Streak(current_streak, longest_streak, 0, DateTime.Now, DateTime.Now), log_count, logs, userid, created_at)); } else { return(null); } reader.Close(); } return(habit); }
public List <Card> ReadStack(Guid id) { try { using NpgsqlConnection conn = OpenConnection(); using var cmd = new NpgsqlCommand("select \"Card\" from \"Stack\" where \"Player\"=@id", conn); cmd.Parameters.AddWithValue("@id", id); cmd.Prepare(); NpgsqlDataReader reader = cmd.ExecuteReader(); if (!reader.Read()) { return(null); } Guid[] cards = reader.GetFieldValue <Guid[]>(0); List <Card> res = new List <Card>(); foreach (var item in cards) { Card tmp; if ((tmp = ReadCard(item)) != null) { res.Add(tmp); } } return(res); } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
public static void ToDownloadDefinition(NpgsqlDataReader reader, DataPumpDownloadDefinition data) { data.Type = (StockType)reader.GetFieldValue <int>(reader.GetOrdinal("typ")); data.PathDaily = GetStringOrEmpty(reader, "path_dzienne"); data.FileNameDaily = GetStringOrEmpty(reader, "file_dzienne"); data.PathIntra = GetStringOrEmpty(reader, "path_intra"); }
public override Match ExtractEntity(NpgsqlDataReader reader) { long id = reader.GetFieldValue <long>(0); long first_team = reader.GetFieldValue <long>(1); long second_team = reader.GetFieldValue <long>(2); DateTime date = reader.GetFieldValue <DateTime>(3); Match match = new Match() { ID = id, FirstTeam = first_team, SecondTeam = second_team, Date = date }; return(match); }
public User GetByUsername(string username) { var user = new User(); try { using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT * FROM users WHERE username = @username", connection)) { cmd.Parameters.AddWithValue("username", username); using (NpgsqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { user.Id = dr.GetFieldValue <int>("id"); user.Username = dr.GetFieldValue <string>("username"); user.Email = dr.GetFieldValue <string>("email"); user.Name = dr.GetFieldValue <string>("name"); user.Surname = dr.GetFieldValue <string>("surname"); user.Password = dr.GetFieldValue <string>("password"); user.Salt = Convert.FromBase64String(dr.GetFieldValue <string>("salt")); } } } return(user); } catch (Exception ex) { throw; //log exception } }
public IEnumerable <User> GetAll() { var users = new List <User>(); try { using var connection = new NpgsqlConnection(_connectionString); connection.Open(); using (var cmd = new NpgsqlCommand(@"SELECT * FROM users", connection)) { using (NpgsqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { var user = new User(); user.Id = dr.GetFieldValue <int>("id"); user.Username = dr.GetFieldValue <string>("username"); user.Email = dr.GetFieldValue <string>("email"); user.Name = dr.GetFieldValue <string>("name"); user.Surname = dr.GetFieldValue <string>("surname"); user.Password = dr.GetFieldValue <string>("password"); user.Salt = Convert.FromBase64String(dr.GetFieldValue <string>("salt")); users.Add(user); } } } return(users); } catch (Exception ex) { throw; //log exception } }
private void FormKlient_Load(object sender, EventArgs e) { NpgsqlDataReader read = dbHelp.PROCEDURE("sprawdzstanmagazynu"); while (read.Read()) { Produkt pr = new Produkt(read.GetFieldValue <string>(0), read.GetFieldValue <string>(1), read.GetFieldValue <int>(2), read.GetFieldValue <string>(3)); listaProduktów.Add(pr); listBox1.Items.Add(pr.GetNazwa() + " " + pr.GetKategoria()); } dbHelp.GetConn().Close(); read = dbHelp.SELECT("nazwa", "producenci"); while (read.Read()) { comboBox1.Items.Add(read.GetFieldValue <string>(0)); } dbHelp.GetConn().Close(); }
public List <Trade> ReadTrades() { try { using NpgsqlConnection conn = OpenConnection(); using var cmd = new NpgsqlCommand("SELECT \"Id\", card, cardtype, element, \"minDamage\", player FROM \"Trade\"", conn); cmd.Prepare(); NpgsqlDataReader reader = cmd.ExecuteReader(); if (!reader.Read()) { return(null); } List <Trade> trades = new List <Trade>(); do { Guid guid = reader.GetFieldValue <Guid>(0); Guid carduuid = reader.GetFieldValue <Guid>(1); Cardtype type = reader.GetFieldValue <Cardtype>(2); Element element = reader.GetFieldValue <Element>(3); int minDamage = reader.GetInt32(4); Guid userid = reader.GetGuid(5); User user = ReadPlayer(userid); Card card = ReadCard(carduuid); if (element == default) { trades.Add(new Trade(user, guid, card, type, minDamage)); } else { trades.Add(new Trade(user, guid, card, type, element)); } } while (reader.Read()); return(trades); } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
NpgsqlDbColumn LoadColumnDefinition(NpgsqlDataReader reader) { var columnName = reader.GetString(reader.GetOrdinal("attname")); var column = new NpgsqlDbColumn { AllowDBNull = !reader.GetBoolean(reader.GetOrdinal("attnotnull")), BaseCatalogName = _connection.Database, BaseColumnName = columnName, BaseSchemaName = reader.GetString(reader.GetOrdinal("nspname")), BaseServerName = _connection.Host, BaseTableName = reader.GetString(reader.GetOrdinal("relname")), ColumnName = columnName, ColumnOrdinal = reader.GetInt32(reader.GetOrdinal("attnum")) - 1, ColumnAttributeNumber = (short)(reader.GetInt16(reader.GetOrdinal("attnum")) - 1), IsKey = reader.GetBoolean(reader.GetOrdinal("isprimarykey")), IsReadOnly = !reader.GetBoolean(reader.GetOrdinal("is_updatable")), IsUnique = reader.GetBoolean(reader.GetOrdinal("isunique")), DataTypeName = reader.GetString(reader.GetOrdinal("typname")), TableOID = reader.GetFieldValue<uint>(reader.GetOrdinal("attrelid")), TypeOID = reader.GetFieldValue<uint>(reader.GetOrdinal("typoid")) }; var defaultValueOrdinal = reader.GetOrdinal("default"); column.DefaultValue = reader.IsDBNull(defaultValueOrdinal) ? null : reader.GetString(defaultValueOrdinal); column.IsAutoIncrement = column.DefaultValue != null && column.DefaultValue.StartsWith("nextval("); ColumnPostConfig(column, reader.GetInt32(reader.GetOrdinal("atttypmod"))); return column; }