For detailed information on PostgreSQL composite types and how they are treated in dotConnect for PostgreSQL refer to article Working with Composite Types.
static void ReadData(PgSqlConnection conn) { string str = "SELECT person FROM personnel"; PgSqlCommand pgCommand = new PgSqlCommand(str,conn); PgSqlDataReader pgReader = pgCommand.ExecuteReader(); while (pgReader.Read()) { //obtain data PgSqlRow pgRow = pgReader.GetPgSqlRow(0); if (pgRow == null) { Console.WriteLine(); continue; } //obtain data description PgSqlRowType pgRowType = pgRow.RowType; //iterate through all columns foreach(PgSqlAttribute pgAttr in pgRowType.Attributes) { Console.Write(pgRow[pgAttr] + "\t"); } Console.WriteLine(); } pgReader.Close(); }
Sub ReadData(ByVal conn As PgSqlConnection) Dim str As String = "SELECT person FROM personnel" Dim pgCommand As PgSqlCommand = New PgSqlCommand(str, conn) Dim pgReader As PgSqlDataReader = pgCommand.ExecuteReader() While pgReader.Read() 'obtain data Dim pgRow As PgSqlRow = pgReader.GetPgSqlRow(0) If pgRow Is Nothing Then Console.WriteLine() Else 'obtain data description Dim pgRowType As PgSqlRowType = pgRow.RowType 'iterate through all columns For Each pgAttr As PgSqlAttribute In pgRowType.Attributes Console.Write(pgRow(pgAttr) & Chr(9)) Next pgAttr Console.WriteLine() End If End While pgReader.Close() End Sub
System.Object
Devart.Data.PostgreSql.PgSqlRow