System.Data [00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00] 1.0.3300.0 1.0.5000.0 2.0.0.0 Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details. System.Data.Common.DbDataReader

To create a , you must call the method of the object, instead of directly using a constructor.

While the is being used, the associated is busy serving the , and no other operations can be performed on the other than closing it. This is the case until the method of the is called. For example, you cannot retrieve output parameters until after you call .

Changes made to a result set by another process or thread while data is being read may be visible to the user of the SqlDataReader. However, the precise behavior is timing dependent.

and are the only properties that you can call after the is closed. Although the property may be accessed while the exists, always call before returning the value of to guarantee an accurate return value.

When using sequential access (), an will be raised if the position is advanced and another read operation is attempted on the previous column.

For optimal performance, avoids creating unnecessary objects or making unnecessary copies of data. Therefore, multiple calls to methods such as return a reference to the same object. Use caution if you are modifying the underlying value of the objects returned by methods such as .

Provides a way of reading a forward-only stream of rows from a SQL Server database. This class cannot be inherited.

- Method
  System.Void

  You must explicitly call the method when you are through using the to use the associated for any other purpose.

  The Close method fills in the values for output parameters, return values and RecordsAffected, increasing the time that it takes to close a SqlDataReader that was used to process a large or complex query. When the return values and the number of records affected by a query are not significant, the time that it takes to close the SqlDataReader can be reduced by calling the method of the associated object before calling the Close method.

  Do not call Close or Dispose on a Connection, a DataReader, or any other managed object in the Finalize method of your class. In a finalizer, you should only release unmanaged resources that your class owns directly. If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. For more information, see Garbage Collection.

  Closes the object.

  1.0.5000.0
  2.0.0.0
- Property
  2.0.0.0
  System.Data.SqlClient.SqlConnection To be added. To be added.

  Gets the associated with the .

- Property
  System.Int32 To be added: an object of type 'int'

  The outermost table has a depth of zero. The .NET Framework Data Provider for SQL Server does not support nesting and always returns zero.

  Gets a value that indicates the depth of nesting for the current row.

  1.0.5000.0
  2.0.0.0
- Property
  System.Int32 To be added: an object of type 'int'

  Executing a query that, by its nature, does not return rows (such as a DELETE query), sets to 0. However. this should not be confused with a query that returns 0 rows (such as SELECT * FROM table WHERE 1 = 2) in which case returns the number of columns in the table, including hidden fields. Use to exclude hidden fields.

  Gets the number of columns in the current row.

  1.0.5000.0
  2.0.0.0
- Method
  System.Boolean ``

  No conversions are performed; therefore, the data retrieved must already be a Boolean, or an exception is generated.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a Boolean.

  The value of the column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Byte ``

  No conversions are performed; therefore, the data retrieved must already be a byte.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a byte.

  The value of the specified column as a byte.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Int64 `` `` `` `` ``

  returns the number of available bytes in the field. Most of the time this is the exact length of the field. However, the number returned may be less than the true length of the field if GetBytes has already been used to obtain bytes from the field. This may be the case, for example, if the is reading a large data structure into a buffer. For more information, see the SequentialAccess setting for .

  If you pass a buffer that is null, returns the length of the entire field in bytes, not the remaining size based on the buffer offset parameter.

  No conversions are performed; therefore, the data retrieved must already be a byte array.

  Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset.

  The actual number of bytes read.

  The zero-based column ordinal. The index within the field from which to begin the read operation. The buffer into which to read the stream of bytes. The index within the where the write operation is to start. The maximum length to copy into the buffer. 1.0.5000.0 2.0.0.0
- Method
  System.Char ``

  Not supported for .

  Gets the value of the specified column as a single character.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0 System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)
- Method
  System.Int64 `` `` `` `` ``

  returns the number of available characters in the field. Frequently this is the exact length of the field. However, the number returned may be less than the true length of the field if GetChars has already been used to obtain characters from the field. This may be the case, for example, if the is reading a large data structure into a buffer. For more information, see the SequentialAccess setting for .

  The actual number of characters read can be less than the requested length, if the end of the field is reached. If you pass a buffer that is null, returns the length of the entire field in characters, not the remaining size based on the buffer offset parameter.

  No conversions are performed; therefore. the data retrieved must already be a character array.

  The method returns 0 when is negative.

  Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset.

  The actual number of characters read.

  The zero-based column ordinal. The index within the field from which to begin the read operation. The buffer into which to read the stream of bytes. The index within the where the write operation is to start. The maximum length to copy into the buffer. 1.0.5000.0 2.0.0.0
- Method
  System.Data.IDataReader `` To be added

  Returns an for the specified column ordinal.

  The instance for the specified column ordinal.

  A column ordinal. 1.0.5000.0 System.ComponentModel.EditorBrowsable(State=System.ComponentModel.EditorBrowsableState.Never)
- Method
  System.String ``

  Returns the name of the back-end data type.

  numeric is a synonym in SQL Server for the decimal data type. GetDataTypeName will return "decimal" for a column defined as either decimal or numeric.

  Gets a string representing the data type of the specified column.

  The string representing the data type of the specified column.

  The zero-based ordinal position of the column to find. 1.0.5000.0 2.0.0.0
- Method
  System.DateTime ``

  No conversions are performed; therefore, the data retrieved must already be a object.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a object.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Decimal ``

  No conversions are performed; therefore, the data retrieved must already be a object.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a object.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Double ``

  No conversions are performed. Therefore, the data retrieved must already be a double-precision floating point number.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a double-precision floating point number.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  2.0.0.0
  System.Collections.IEnumerator

  Although you can use this method to retrieve an explicit enumerator, in languages that support a foreach construct, it is simpler to use the looping construct directly in order to iterate through the rows in the data reader.

  Returns an that iterates through the .

  An for the .

- Method
  System.Type `` To be added

  Gets the that is the data type of the object.

  The that is the data type of the object. If the type does not exist on the client, in the case of a User-Defined Type (UDT) returned from the database, GetFieldType returns null.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Single ``

  No conversions are performed. Therefore, the data retrieved must already be a single-precision floating point number.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a single-precision floating point number.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Guid ``

  No conversions are performed; therefore, the data retrieved must already be a GUID.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a globally unique identifier (GUID).

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Int16 ``

  No conversions are performed; therefore, the data retrieved must already be a 16-bit signed integer.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a 16-bit signed integer.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Int32 ``

  No conversions are performed; therefore, the data retrieved must already be a 32-bit signed integer.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a 32-bit signed integer.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Int64 ``

  No conversions are performed; therefore, the data retrieved must already be a 64-bit signed integer.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a 64-bit signed integer.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.String `` To be added

  Gets the name of the specified column.

  The name of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Int32 ``

  GetOrdinal performs a case-sensitive lookup first. If it fails, a second, case-insensitive search occurs (a case-insensitive comparison is done using the database collation). Unexpected results can occur when comparisons are affected by culture-specific casing rules. For example, in Turkish, the following example yields the wrong results because the file system in Turkish does not use linguistic casing rules for the letter 'i' in "file". The method throws an IndexOutOfRange exception if the zero-based column ordinal is not found.

  GetOrdinal is kana-width insensitive.

  Because ordinal-based lookups are more efficient than named lookups, it is inefficient to call GetOrdinal within a loop. Save time by calling GetOrdinal once and assigning the results to an integer variable for use within the loop.

  Gets the column ordinal, given the name of the column.

  The zero-based column ordinal.

  The name of the column. 1.0.5000.0 2.0.0.0
- Method
  2.0.0.0
  System.Type `` To be added.

  Gets an Object that is a representation of the underlying provider-specific field type.

  Gets an that is a representation of the underlying provider-specific field type.

  An representing the column ordinal.
- Method
  2.0.0.0
  System.Object `` To be added.

  Gets an Object that is a representation of the underlying provider specific value.

  An that is a representation of the underlying provider specific value.

  An representing the column ordinal.
- Method
  2.0.0.0
  System.Int32 `` To be added.

  Gets an array of objects that are a representation of the underlying provider specific values.

  The array of objects that are a representation of the underlying provider specific values.

  An array of into which to copy the column values.
- Method
  System.Data.DataTable

  For the method returns metadata about each column in the following order:

  DataReader column

  Description

  AllowDBNull

  Set if the consumer can set the column to a null value or if the provider cannot determine whether the consumer can set the column to a null value. Otherwise, not set. A column may contain null values, even if it cannot be set to a null value.

  BaseCatalogName

  The name of the catalog in the data store that contains the column. NULL if the base catalog name cannot be determined. The default of this column is a null value.

  BaseColumnName

  The name of the column in the data store. This might be different than the column name returned in the ColumnName column if an alias was used. A null value if the base column name cannot be determined or if the rowset column is derived, but not identical to, a column in the data store. The default of this column is a null value.

  BaseSchemaName

  The name of the schema in the data store that contains the column. A null value if the base schema name cannot be determined. The default of this column is a null value.

  BaseServerName

  The name of the instance of Microsoft SQL Server used by the .

  BaseTableName

  The name of the table or view in the data store that contains the column. A null value if the base table name cannot be determined. The default of this column is a null value.

  ColumnName

  The name of the column; this might not be unique. If this cannot be determined, a null value is returned. This name always reflects the most recent renaming of the column in the current view or command text.

  ColumnOrdinal

  The zero-based ordinal of the column. This column cannot contain a null value.

  ColumnSize

  The maximum possible length of a value in the column. For columns that use a fixed-length data type, this is the size of the data type. For nvarchar(MAX), varchar(MAX), and varbinary(MAX) columns stored in a SQL Server database, the maximum size is 2GB. If these columns are stored and accessed as files, the limit on maximum size is imposed by the file system. This value changes when using the Type System Version keyword in the connection string. For new types they are represented as downlevel types. The MAX data types return the normal 4k for nvarchar and 8000 for varchar. For more information, see the Transact-SQL reference in SQL Server Books Online.

  DataTypeName

  Returns a string representing the data type of the specified column.

  IsAliased

  true: The column name is an alias.

  false: The column name is not an alias.

  IsAutoIncrement

  true: The column assigns values to new rows in fixed increments.

  false: The column does not assign values to new rows in fixed increments. The default of this column is false.

  IsColumnSet

  true: The column is a sparse column that is a member of a column set.

  IsExpression

  true: The column is an expression.

  false: The column is not an expression.

  IsHidden

  true: The column is hidden.

  false: The column is not hidden.

  IsIdentity

  true: The column is an identity column.

  false: The column is not an identity column.

  IsKey

  true: The column is one of a set of columns in the rowset that, taken together, uniquely identify the row. The set of columns with IsKey set to true must uniquely identify a row in the rowset. There is no requirement that this set of columns is a minimal set of columns. This set of columns may be generated from a base table primary key, a unique constraint or a unique index.

  false: The column is not required to uniquely identify the row.

  IsLong

  true: The column contains a Binary Long Object (BLOB) that contains very long data. The definition of very long data is provider-specific.

  false: The column does not contain a Binary Long Object (BLOB) that contains very long data.

  IsReadOnly

  true: The column cannot be modified.

  false: The column can be modified.

  IsRowVersion

  true: The column contains a persistent row identifier that cannot be written to, and has no meaningful value except to identity the row.

  false: The column does not contain a persistent row identifier that cannot be written to, and has no meaningful value except to identity the row.

  IsUnique

  true: Column is of type timestamp.

  false: Column is not of type timestamp.

  NonVersionedProviderType

  The type of the column irrespective of the current Type System Version specified in the connection string. The returned value is from the enumeration.

  NumericPrecision

  If ProviderType is a numeric data type, this is the maximum precision of the column. The precision depends on the definition of the column. If ProviderType is not a numeric data type, this is 255.

  NumericScale

  If ProviderType is DBTYPE_DECIMAL or DBTYPE_NUMERIC, the number of digits to the right of the decimal point. Otherwise, this is 255.

  ProviderSpecificDataType

  Returns the provider-specific data type of the column based on the Type System Version keyword in the connection string.

  ProviderType

  The indicator of the column's data type. If the data type of the column varies from row to row, this must be Object. This column cannot contain a null value.

  UdtAssemblyQualifiedName

  If the column is a user-defined type (UDT), this is the qualified name of the UDT's assembly as per . If the column is not a UDT, this is null.

  XmlSchemaCollectionDatabase

  The name of the database where the schema collection for this XML instance is located, if the row contains information about an XML column. This value is null (Nothing in Visual Basic) if the collection is defined within the current database. It is also null if there is no schema collection, in which case the XmlSchemaCollectionName and XmlSchemaCollectionOwningSchema columns are also null.

  XmlSchemaCollectionName

  The name of the schema collection for this XML instance, if the row contains information about an XML column. This value is null (Nothing in Visual Basic) if there is no associated schema collection. If the value is null, the XmlSchemaCollectionDatabase and XmlSchemaCollectionOwningSchema columns are also null.

  XmlSchemaCollectionOwningSchema

  The owning relational schema where the schema collection for this XML instance is located, if the row contains information about an XML column. This value is null (Nothing in Visual Basic) if the collection is defined within the current database. It is also null if there is no schema collection, in which case the XmlSchemaCollectionDatabase and XmlSchemaCollectionName columns are also null.

  To make sure that metadata columns return the correct information, you must call with the parameter set to KeyInfo. Otherwise, some of the columns in the schema table may return default, null, or incorrect data.

  Returns a that describes the column metadata of the .

  A that describes the column metadata.

  1.0.5000.0
  2.0.0.0
- Method
  System.Data.SqlTypes.SqlBinary ``

  No conversions are performed; therefore the data retrieved must already be a binary structure or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlBoolean ``

  No conversions are performed; therefore, the data retrieved must already be a Boolean or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlByte ``

  No conversions are performed; therefore the data retrieved must already be a byte, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  2.0.0.0
  System.Data.SqlTypes.SqlBytes `` To be added.

  Gets the value of the specified column as .

  The value of the column expressed as a .

  The zero-based column ordinal.
- Method
  System.Data.SqlTypes.SqlDateTime ``

  No conversions are performed; therefore, the data retrieved must already be a date/time value, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlDecimal ``

  No conversions are performed; therefore, the data retrieved must already be a decimal value, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlDouble ``

  No conversions are performed; therefore, the data retrieved must already be a double-precision floating-point number, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlGuid ``

  No conversions are performed; therefore, the data retrieved must already be a GUID, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlInt16 ``

  No conversions are performed; therefore, the data retrieved must already be a 16-bit signed integer, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlInt32 ``

  No conversions are performed; therefore the data retrieved must already be a 32-bit signed integer, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlInt64 ``

  No conversions are performed; therefore, the data retrieved must already be a 64-bit signed integer, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlMoney ``

  No conversions are performed; therefore, the data retrieved must already be a decimal value, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlSingle ``

  No conversions are performed; therefore, the data retrieved must already be a single precision floating point number, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Data.SqlTypes.SqlString ``

  No conversions are performed; therefore, the data retrieved must already be a string, or an exception is generated.

  Gets the value of the specified column as a .

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Object ``

  returns data using the native SQL Server types. To retrieve data using the .NET Framework types, see .

  Returns the data value in the specified column as a SQL Server type.

  The value of the column expressed as a .

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Int32 ``

  Returns the values for all the columns in the record in a single call, using the SQL type system instead of the CLR type system. The length of the array does not need to match the number of columns in the record. You can pass an array that contains fewer than the number of columns contained in the record. Only the amount of data the array holds is copied to the array, starting at the column with ordinal 0. You can also pass an array whose length is more than the number of columns contained in the resulting row. Any remaining columns are untouched.

  Fills an array of that contains the values for all the columns in the record, expressed as SQL Server types.

  An integer indicating the number of columns copied.

  An array of into which to copy the values. The column values are expressed as SQL Server types. 1.0.5000.0 2.0.0.0
- Method
  2.0.0.0
  System.Data.SqlTypes.SqlXml ``

  No conversions are performed; therefore, the data retrieved must already be an XML value.

  Call to check for null values before calling this method.

  Gets the value of the specified column as an XML value.

  A value that contains the XML stored within the corresponding field.

  The zero-based column ordinal.
- Method
  System.String ``

  No conversions are performed; therefore, the data retrieved must already be a string.

  Call to check for null values before calling this method.

  Gets the value of the specified column as a string.

  The value of the specified column.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Object ``

  returns data using the .NET Framework types.

  Gets the value of the specified column in its native format.

  This method returns for null database columns.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Method
  System.Int32 ``

  For most applications, this method provides an efficient means for retrieving all columns, instead of retrieving each column individually.

  You can pass an array that contains fewer than the number of columns contained in the resulting row. Only the amount of data the array holds is copied to the array. You can also pass an array whose length is more than the number of columns contained in the resulting row.

  This method returns for null database columns.

  Populates an array of objects with the column values of the current row.

  The number of instances of in the array.

  An array of into which to copy the attribute columns. 1.0.5000.0 2.0.0.0
- Property
  1.0.5000.0
  2.0.0.0
  System.Boolean To be added. To be added.

  Gets a value that indicates whether the contains one or more rows.

- Property
  System.Boolean To be added: an object of type 'bool'

  It is not possible to read from a instance that is closed.

  Retrieves a Boolean value that indicates whether the specified instance has been closed.

  1.0.5000.0
  2.0.0.0
- Method
  2.0.0.0
  System.Boolean ``

  This member supports the .NET Framework infrastructure and is not intended to be used directly from your code.

  Determines whether the specified matches that of the .

  true if the specified is true, false otherwise.

  A enumeration.
- Method
  System.Boolean ``

  Call this method to check for null column values before calling the typed get methods (for example, , , and so on) to avoid raising an error.

  code reference: SqlDataReader_IsDbNull#1

  Gets a value that indicates whether the column contains non-existent or missing values.

  true if the specified column value is equivalent to ; otherwise false.

  The zero-based column ordinal. 1.0.5000.0 2.0.0.0
- Property
  1.0.5000.0
  2.0.0.0
  System.Object `` To be added. To be added. To be added. To be added.
- Property
  1.0.5000.0
  2.0.0.0
  System.Object `` To be added. To be added. To be added. To be added.
- Method
  System.Boolean

  Used to process multiple results, which can be generated by executing batch Transact-SQL statements.

  By default, the data reader is positioned on the first result.

  Advances the data reader to the next result, when reading the results of batch Transact-SQL statements.

  true if there are more result sets; otherwise false.

  1.0.5000.0
  2.0.0.0
- Method
  System.Boolean

  The default position of the is before the first record. Therefore, you must call to begin accessing any data.

  Only one SqlDataReader per associated may be open at a time, and any attempt to open another will fail until the first one is closed. Similarly, while the SqlDataReader is being used, the associated SqlConnection is busy serving it until you call .

  Advances the to the next record.

  true if there are more rows; otherwise false.

  1.0.5000.0
  2.0.0.0
- Property
  System.Int32 To be added: an object of type 'int'

  The property is not set until all rows are read and you close the .

  The value of this property is cumulative. For example, if two records are inserted in batch mode, the value of RecordsAffected will be two.

  and are the only properties that you can call after the is closed.

  Gets the number of rows changed, inserted, or deleted by execution of the Transact-SQL statement.

  1.0.5000.0
  2.0.0.0
- Method
  1.0.5000.0
  System.Collections.IEnumerator To be added.

  Returns an enumerator that can be used to iterate through the item collection.

  The enumerator that can be used to iterate through the item collection.

- Method
  1.0.5000.0
  System.Void To be added.

  Releases all resources that are used by the data reader.

- Property
  2.0.0.0
  System.Int32 To be added.

  This value is used to determine how many fields in the are visible. For example, a SELECT on a partial primary key returns the remaining parts of the key as hidden fields. The hidden fields are always appended behind the visible fields.

  Gets the number of fields in the that are not hidden.