// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0
-
using System.Collections;
+using System.ComponentModel;
using System.Data;
+using System.IO;
+
+#if NET_4_5
+using System.Threading;
+using System.Threading.Tasks;
+#endif
namespace System.Data.Common {
- public abstract class DbDataReader : MarshalByRefObject, IDataReader, IDataReader2, IDataRecord, IDataRecord2, IDisposable, IEnumerable
+ public abstract class DbDataReader : MarshalByRefObject, IDataReader, IDataRecord, IDisposable, IEnumerable
{
#region Constructors
public abstract int FieldCount { get; }
public abstract bool HasRows { get; }
public abstract bool IsClosed { get; }
- public abstract object this [int index] { get; }
+ public abstract object this [int ordinal] { get; }
public abstract object this [string name] { get; }
public abstract int RecordsAffected { get; }
- public abstract int VisibleFieldCount { get; }
+#if NET_2_0
+ public virtual int VisibleFieldCount {
+ get { return FieldCount; }
+ }
+#endif
#endregion // Properties
#region Methods
public abstract void Close ();
- public abstract void Dispose ();
- public abstract bool GetBoolean (int i);
- public abstract byte GetByte (int i);
- public abstract long GetBytes (int i, long fieldOffset, byte[] buffer, int bufferOffset, int length);
- public abstract char GetChar (int i);
- public abstract long GetChars (int i, long dataIndex, char[] buffer, int bufferIndex, int length);
+ public abstract bool GetBoolean (int ordinal);
+ public abstract byte GetByte (int ordinal);
+ public abstract long GetBytes (int ordinal, long dataOffset, byte[] buffer, int bufferOffset, int length);
+ public abstract char GetChar (int ordinal);
+ public abstract long GetChars (int ordinal, long dataOffset, char[] buffer, int bufferOffset, int length);
- [MonoTODO]
- public DbDataReader GetData (int i)
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public void Dispose ()
{
- throw new NotImplementedException ();
+ Dispose (true);
+ }
+
+ protected virtual void Dispose (bool disposing)
+ {
+ if (disposing)
+ Close ();
}
+#if NET_2_0
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public DbDataReader GetData (int ordinal)
+ {
+ return ((DbDataReader) this [ordinal]);
+ }
+#endif
- public abstract string GetDataTypeName (int i);
- public abstract DateTime GetDateTime (int i);
- public abstract decimal GetDecimal (int i);
- public abstract double GetDouble (int i);
+ public abstract string GetDataTypeName (int ordinal);
+ public abstract DateTime GetDateTime (int ordinal);
+ public abstract decimal GetDecimal (int ordinal);
+ public abstract double GetDouble (int ordinal);
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
public abstract IEnumerator GetEnumerator ();
- public abstract Type GetFieldProviderSpecificType (int i);
- public abstract Type GetFieldType (int i);
- public abstract float GetFloat (int i);
- public abstract Guid GetGuid (int i);
- public abstract short GetInt16 (int i);
- public abstract int GetInt32 (int i);
- public abstract long GetInt64 (int i);
- public abstract string GetName (int i);
+
+ public abstract Type GetFieldType (int ordinal);
+ public abstract float GetFloat (int ordinal);
+ public abstract Guid GetGuid (int ordinal);
+ public abstract short GetInt16 (int ordinal);
+ public abstract int GetInt32 (int ordinal);
+ public abstract long GetInt64 (int ordinal);
+ public abstract string GetName (int ordinal);
public abstract int GetOrdinal (string name);
- public abstract object GetProviderSpecificValue (int i);
- public abstract int GetProviderSpecificValues (object[] values);
+
+#if NET_2_0
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public virtual Type GetProviderSpecificFieldType (int ordinal)
+ {
+ return GetFieldType (ordinal);
+ }
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public virtual object GetProviderSpecificValue (int ordinal)
+ {
+ return GetValue (ordinal);
+ }
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public virtual int GetProviderSpecificValues (object[] values)
+ {
+ return GetValues (values);
+ }
+
+ protected virtual DbDataReader GetDbDataReader (int ordinal)
+ {
+ return ((DbDataReader) this [ordinal]);
+ }
+#endif
+
public abstract DataTable GetSchemaTable ();
- public abstract string GetString (int i);
- public abstract object GetValue (int i);
+ public abstract string GetString (int ordinal);
+ public abstract object GetValue (int ordinal);
public abstract int GetValues (object[] values);
- IDataReader IDataRecord.GetData (int i)
+ IDataReader IDataRecord.GetData (int ordinal)
{
- return ((IDataReader) this).GetData (i);
+ return ((IDataReader) this).GetData (ordinal);
}
- public abstract bool IsDBNull (int i);
+ public abstract bool IsDBNull (int ordinal);
public abstract bool NextResult ();
public abstract bool Read ();
+ internal static DataTable GetSchemaTableTemplate ()
+ {
+ Type booleanType = typeof (bool);
+ Type stringType = typeof (string);
+ Type intType = typeof (int);
+ Type typeType = typeof (Type);
+ Type shortType = typeof (short);
+
+ DataTable schemaTable = new DataTable ("SchemaTable");
+ schemaTable.Columns.Add ("ColumnName", stringType);
+ schemaTable.Columns.Add ("ColumnOrdinal", intType);
+ schemaTable.Columns.Add ("ColumnSize", intType);
+ schemaTable.Columns.Add ("NumericPrecision", shortType);
+ schemaTable.Columns.Add ("NumericScale", shortType);
+ schemaTable.Columns.Add ("IsUnique", booleanType);
+ schemaTable.Columns.Add ("IsKey", booleanType);
+ schemaTable.Columns.Add ("BaseServerName", stringType);
+ schemaTable.Columns.Add ("BaseCatalogName", stringType);
+ schemaTable.Columns.Add ("BaseColumnName", stringType);
+ schemaTable.Columns.Add ("BaseSchemaName", stringType);
+ schemaTable.Columns.Add ("BaseTableName", stringType);
+ schemaTable.Columns.Add ("DataType", typeType);
+ schemaTable.Columns.Add ("AllowDBNull", booleanType);
+ schemaTable.Columns.Add ("ProviderType", intType);
+ schemaTable.Columns.Add ("IsAliased", booleanType);
+ schemaTable.Columns.Add ("IsExpression", booleanType);
+ schemaTable.Columns.Add ("IsIdentity", booleanType);
+ schemaTable.Columns.Add ("IsAutoIncrement", booleanType);
+ schemaTable.Columns.Add ("IsRowVersion", booleanType);
+ schemaTable.Columns.Add ("IsHidden", booleanType);
+ schemaTable.Columns.Add ("IsLong", booleanType);
+ schemaTable.Columns.Add ("IsReadOnly", booleanType);
+
+ return schemaTable;
+ }
+
+#if NET_4_5
+ [MonoTODO]
+ public virtual T GetFieldValue<T> (int i)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public Task<T> GetFieldValueAsync<T> (int ordinal)
+ {
+ return GetFieldValueAsync<T> (ordinal, CancellationToken.None);
+ }
+
+ [MonoTODO]
+ public virtual Task<T> GetFieldValueAsync<T> (int ordinal, CancellationToken cancellationToken)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public Task<bool> NextResultAsync ()
+ {
+ return NextResultAsync (CancellationToken.None);
+ }
+
+ public Task<bool> IsDBNullAsync (int ordinal)
+ {
+ return IsDBNullAsync (ordinal, CancellationToken.None);
+ }
+
+ [MonoTODO]
+ public virtual Stream GetStream (int i)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual TextReader GetTextReader (int i)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual Task<bool> IsDBNullAsync (int ordinal, CancellationToken cancellationToken)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual Task<bool> NextResultAsync (CancellationToken cancellationToken)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public Task<bool> ReadAsync ()
+ {
+ return ReadAsync (CancellationToken.None);
+ }
+
+ [MonoTODO]
+ public virtual Task<bool> ReadAsync (CancellationToken cancellationToken)
+ {
+ throw new NotImplementedException ();
+ }
+#endif
+
#endregion // Methods
}
}
-#endif // NET_2_0