Files
ayanova7/source/Data/Data/FireBird/FireBirdDataReaderWrapper.cs
2018-06-29 19:47:36 +00:00

224 lines
4.2 KiB
C#

using System;
using System.Collections;
using System.Data;
using FirebirdSql.Data.FirebirdClient;
//using FirebirdSql.Data.Firebird;
using System.Globalization;
using System.Text;
namespace GZTW.Data.FireBird
{
/// <devdoc>
/// A wrapper to convert data from FireBird for the reader.
/// </devdoc>
internal class FireBirdDataReaderWrapper : MarshalByRefObject, IDataReader, IEnumerable
{
private FbDataReader innerReader;
public static explicit operator FbDataReader(FireBirdDataReaderWrapper fireBirdDataReaderWrapper)
{
return fireBirdDataReaderWrapper.InnerReader;
}
public FireBirdDataReaderWrapper(FbDataReader reader)
{
this.innerReader = reader;
}
public object this[int index]
{
get { return InnerReader[index]; }
}
public object this[string name]
{
get { return InnerReader[name]; }
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)InnerReader).GetEnumerator();
}
void IDisposable.Dispose()
{
//InnerReader.Dispose();
}
public void Close()
{
InnerReader.Close();
}
public DataTable GetSchemaTable()
{
return InnerReader.GetSchemaTable();
}
public bool NextResult()
{
return InnerReader.NextResult();
}
public bool Read()
{
return InnerReader.Read();
}
public int Depth
{
get { return InnerReader.Depth; }
}
public bool IsClosed
{
get { return InnerReader.IsClosed; }
}
public int RecordsAffected
{
get { return InnerReader.RecordsAffected; }
}
public int FieldCount
{
get { return InnerReader.FieldCount; }
}
public bool GetBoolean(int index)
{
if(InnerReader.GetInt16(index)!=0)
return true;
return false;
//not directly supported, using int16 instead
//int nBool=InnerReader.get
//return InnerReader.GetBoolean(index);
}
public byte GetByte(int index)
{
return InnerReader.GetByte(index);
}
public long GetBytes(int ordinal, long dataIndex, byte[] buffer, int bufferIndex, int length)
{
return InnerReader.GetBytes(ordinal, dataIndex, buffer, bufferIndex, length);
}
public Char GetChar(int index)
{
return InnerReader.GetChar(index);
}
public long GetChars(int index, long dataIndex, char[] buffer, int bufferIndex, int length)
{
return InnerReader.GetChars(index, dataIndex, buffer, bufferIndex, length);
}
public IDataReader GetData(int index)
{
return InnerReader.GetData(index);
}
public string GetDataTypeName(int index)
{
return InnerReader.GetDataTypeName(index);
}
public DateTime GetDateTime(int ordinal_)
{
return InnerReader.GetDateTime(ordinal_);
}
public decimal GetDecimal(int index)
{
return InnerReader.GetDecimal(index);
}
public double GetDouble(int index)
{
return InnerReader.GetDouble(index);
}
public Type GetFieldType(int index)
{
return InnerReader.GetFieldType(index);
}
public float GetFloat(int index)
{
return InnerReader.GetFloat(index);
}
//not directly supported using char38
public Guid GetGuid(int index)
{
string sTemp=InnerReader.GetString(index);
if(sTemp==null||sTemp=="")
return Guid.Empty;
else
return new Guid(sTemp);
}
public short GetInt16(int index)
{
return InnerReader.GetInt16(index);
}
public int GetInt32(int index)
{
return InnerReader.GetInt32(index);
}
public long GetInt64(int index)
{
return InnerReader.GetInt64(index);
}
public string GetName(int index)
{
return InnerReader.GetName(index);
}
public int GetOrdinal(string index)
{
return InnerReader.GetOrdinal(index);
}
public string GetString(int index)
{
return InnerReader.GetString(index);
}
public object GetValue(int index)
{
return InnerReader.GetValue(index);
}
public int GetValues(object[] values)
{
return InnerReader.GetValues(values);
}
public bool IsDBNull(int index)
{
return InnerReader.IsDBNull(index);
}
public FbDataReader InnerReader
{
get { return this.innerReader; }
}
}
}